C# 本地功能的摘要注释和参考不起作用

C# 本地功能的摘要注释和参考不起作用,c#,visual-studio,local-functions,C#,Visual Studio,Local Functions,正如您所知,在C#7.0中添加了一些本地函数。我查看了一些使用本地函数的示例和用例,发现了使用它们的两个原因: 1) 隐藏函数或方法。原因是:如果该函数不是本地函数,其他成员可能会意外地直接使用它 2) 使用“父”函数的变量 在重构代码的调试过程中,我在VisualStudio中找不到对本地函数的引用。有对私有函数的引用: 当我调试或重构代码时,它会有所帮助。在本地函数中,我找不到它们: 所以,第一个问题是为什么本地函数不显示摘要注释和引用 有些程序员喜欢使用本地函数,但有些程序员不喜欢。以

正如您所知,在C#7.0中添加了一些本地函数。我查看了一些使用本地函数的示例和用例,发现了使用它们的两个原因:

1) 隐藏函数或方法。原因是:如果该函数不是本地函数,其他成员可能会意外地直接使用它

2) 使用“父”函数的变量

在重构代码的调试过程中,我在VisualStudio中找不到对本地函数的引用。有对私有函数的引用:

当我调试或重构代码时,它会有所帮助。在本地函数中,我找不到它们:

所以,第一个问题是为什么本地函数不显示摘要注释和引用

有些程序员喜欢使用本地函数,但有些程序员不喜欢。以下是一个示例(来自):

根据msdn

为代码元素插入XML注释的步骤

  • 将文本光标放在要记录的元素(例如方法)上方

  • 执行以下操作之一:

    • 在C#中键入//,或在Visual Basic中键入“”

    • 从编辑菜单中,选择IntelliSense>插入注释

    • 从代码元素上或其正上方的右键单击或上下文菜单中,选择Snippet>Insert Comment

  • 我测试了所有3种插入注释的方法,但没有一种在本地函数上有效

  • 如果尝试插入“//”,IDE不会生成摘要节点
  • 如果您试图通过编辑菜单或右键单击上下文菜单使用内部注释,您将在主函数而不是本地函数上添加摘要
  • IDE:VS2015


    然而,文件中没有提到关于“不支持本地函数”的免责声明。对于第二个问题,如果一个函数
    A
    多次使用本地函数
    B
    ,并且
    B
    未被其他函数使用,则将
    B
    声明为本地函数似乎是可以接受的。对于第一个问题。我在vs2019中测试了在本地函数的顶部输入3个斜杠,ide不会生成摘要文本。我假设ide不支持本地函数的摘要,因为您可以只添加一行注释。@LouisGo关于引用呢?我找不到关于“不支持它”的明确声明,但在msdn中添加摘要的任何方法都不能使用本地函数。为了便于阅读,我将其作为一个答案发布。
     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; }
                }
            }
        }
    
        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
        }