Dil*_*d K 5 c# visual-studio local-functions
如您所知,C# 7.0 添加了一些新功能,其中之一是本地函数。我查看了一些使用本地函数的示例和用例,发现了使用它们的两个原因:
1)隐藏函数或方法。原因是:如果该函数不是本地的,其他成员可能会无意中直接使用该函数
2) 使用“Parent”函数的变量
在重构代码的调试过程中,我找不到对 Visual Studio 中本地函数的引用。有对私有函数的引用:
当我调试或重构代码时它很有帮助。在本地函数中我找不到它们:
那么,第一个问题是为什么局部函数不显示摘要注释和参考文献?
有些程序员喜欢使用本地函数,但有些则不喜欢。下面是一个示例(来自C# 7.0 的新增功能 | .NET 博客):
public IEnumerable<T> Filter<T>(IEnumerable<T> source, Func<T, bool> filter)
{
if (source == null) throw new ArgumentNullException(nameof(source));
if (filter == null) throw new ArgumentNullException(nameof(filter));
return Iterator();
IEnumerable<T> Iterator()
{
foreach (var element in source)
{
if (filter(element)) { yield return element; }
}
}
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,使用本地函数的原因是:
如果Iterator它是 旁边的私有方法Filter,则其他成员可能会意外地直接使用它(无需参数检查)。此外,它需要采用所有相同的参数,而Filter不是让它们只在范围内
第二个问题是为什么我们要使用局部函数?在这种情况下,我们可以删除本地方法,因为它只使用一次。如果我们担心代码大小或代码责任,我们可以使用区域:
public IEnumerable<T> Filter<T>(IEnumerable<T> source, Func<T, bool> filter)
{
if (source == null) throw new ArgumentNullException(nameof(source));
if (filter == null) throw new ArgumentNullException(nameof(filter));
#region Iterating
foreach (var element in source)
{
if (filter(element)) { yield return element; }
}
#endregion
}
Run Code Online (Sandbox Code Playgroud)
为代码元素插入 XML 注释
将文本光标放在要记录的元素(例如方法)上方。
执行以下操作之一:
在 C# 中键入 ///,或在 Visual Basic 中键入 '''
从编辑菜单中,选择 IntelliSense > 插入注释
从代码元素上或上方的右键单击或上下文菜单中,选择“代码段”>“插入注释”
我测试了所有 3 种插入注释的方法,但它们都不适用于本地功能。
集成开发环境:VS2015
但文档中并未提及“不支持本地功能”的免责声明。
| 归档时间: |
|
| 查看次数: |
1342 次 |
| 最近记录: |