Visual Studio 静态void Main中的C#文档注解

bq3bfh9z  于 2022-11-17  发布在  C#
关注(0)|答案(2)|浏览(159)

关于C#文档注解,我找不到任何答案,因此请解释:
如果我在[someFunc()]中有一个单独的类和一个方法,那么使用/// Visual Studio将为该方法插入一个文档注解。

namespace someNs
{
    internal class someClass
    {   
        /// <summary>
        /// 
        /// </summary>
        
        public void someFunc()
        {          
        }        
    } 
}

但是,如果我在“static void Main(string[] args)”中有一个方法,那么使用///将不起作用。

namespace someNs
{
    internal class Program
    {
        static void Main(string[] args)
        { 
            void someFunc()
            {
            }        
        }
    }   
}

请解释为什么会这样,是否可以通过某种方式添加文档注解?

  • 谢谢-谢谢
xhv8bpkk

xhv8bpkk1#

AFAIK这些注解的目的是API文档。someFunc()不是Program的任何可见API的一部分;它是一个实现细节,因此您所要求的特性有点无意义。
使用常规注解记录特定代码段的功能;任何知道someFunc的存在并需要更多信息的人都在阅读您的源代码,所以这应该足够了。

vhmi4jdf

vhmi4jdf2#

具有特定形式的注解可用于指导工具从这些注解及其前面的源代码元素生成XML。(///),或以斜杠和两个星号开头的Delimited_Comments(/**)。它们必须紧接在使用者定义型别或它们所注解的成员之前。属性区段被视为宣告的一部分,因此文档注解必须位于应用于类型或成员的属性之前。
为了便于说明,文档注解的格式如下所示,分为两条语法规则:Single_Line_Doc_Comment和Delimited_Doc_Comment。但是,这些规则不是C#语法的一部分,而是分别表示Single_Line_Comment和Delimited_Comment词法分析器规则的特定格式。

Single_Line_Doc_Comment
    : '///' Input_Character*
    ;
   
Delimited_Doc_Comment
    : '/**' Delimited_Comment_Section* ASTERISK+ '/'
    ;

在Single_Line_Doc_Comment中,如果在与当前Single_Line_Doc_Comment相邻的每个Single_Line_Doc_Comment上的///字符后面有空白字符,则该空白字符不包括在XML输出中。
在Delimited_Doc_Comment中,如果第二行上的第一个非空白字符是ASTERISK,并且可选空白字符和ASTERISK字符的相同模式在Delimited_Doc_Comment中每行的开头重复,则XML输出中不包括重复模式的字符。该模式可以包括ASTERISK字符之前和之后的空白字符。
https://learn.microsoft.com/zh-cn/dotnet/csharp/language-reference/language-specification/documentation-comments

相关问题