C# // 和 /// 注释的区别

3
最近我开始使用///注释我的C#代码,而不是使用///*,因为它更简单易用。今天我开始思考为什么有不同的类型,并发现这个SO问题,其中说明///注释是用于生成xml文档注释。
我在Google上没有找到关于不同类型注释的建议,我认为这意味着两种方式都可以。到目前为止,我使用///注释没有遇到任何问题,但我不想养成一种习惯,以后却需要改掉。据我所知,如果注释中没有元标记,它将不会被识别为文档(或者我完全错了吗?)
在我的代码中充斥着///注释之前,这种注释方式是否是绝对错误的?这种注释方式可能会带来潜在问题吗?

三个斜杠用于描述已声明的方法或函数。我只知道这么多。 - Mr_Green
今天我刚回答了一个解释这些差异的问题。http://stackoverflow.com/questions/13366400/should-you-use-xml-comments-on-field-variables-properties-constructors/13366665#13366665 - evanmcdonnal
你为什么认为代码文档不重要? - Euphoric
请使用三个斜杠来注释代码,而不是使用标准注释。另外,如果您发现自己需要在代码中添加很多注释,请尝试让代码更加自我说明。 - Mitch Wheat
1
这是标准的C#编码规范文档。它会对你有所帮助。http://se.inf.ethz.ch/old/teaching/ss2007/251-0290-00/project/CSharpCodingStandards.pdf - Đức Bùi
@Mitch Wheat:我总是希望我的代码是自说明的,如果我使用有意义的变量和方法名称,但我喜欢通过代码块来自我解释,以防以后需要回到它们... 有没有办法使代码更加自说明? - yu_ominae
3个回答

6

这种注释方式可能会导致潜在的问题吗?

是的。当您决定生成项目文档时,那些已注释的行将成为您的XML文档的一部分。使用/Doc扩展编译代码时,它会使用您的XML注释(///)生成文档。如果您使用它来注释掉代码,则生成的文档将考虑到被注释掉的代码作为您的文档。

请参见:

XML文档注释(C# 编程指南)

如何为项目生成XML文档


@slugster,谢谢,我已经在我的答案中加入了您的参考。 - Habib
哇,好的观点。我以前从未生成过文档,也不知道TODO和其他关键字。那就回到使用//进行注释吧。不过我希望它能自动换行... - yu_ominae
@user643192,不确定换行符,但我使用快捷键进行注释。选择文本,按 Cntl+K,C 进行注释,按 Cntl+K,U 进行取消注释。 - Habib
谢谢你的快捷方式,但我发现先写ext再注释不太好用,因为智能感知的缘故,所以我总是先加注释斜杠。 - yu_ominae
1
还可以看看Sandcastle Help File Builder。Sandcastle使用由您的doc-comments创建的XML文档来自动创建代码文档作为帮助文件。 - Olivier Jacot-Descombes
显示剩余2条评论

1

就代码编译而言,这些注释之间没有任何技术上的区别,它们都会被忽略。

我认为 /// 注释更多地是一种惯例,表示您正在使用 XML Documentation Comments 注释特定的代码块。像 Visual Studio 这样的 IDE 旨在识别不同的注释类型,并相应地进行视觉样式设置。

鉴于使用标准的 // 或 /* */ 注释是一般惯例,还有可能会混淆(或更有可能是恼怒)其他开发人员阅读您的代码。


0

如果您使用像 ReSharper 这样的开发辅助工具,它们通常会为您提供注释代码块的功能,可以使用 ///* ... */ 进行注释。使用这些工具可以切换这些注释代码块,在使用 3 条斜杠而不是 2 条斜杠时,这将无法为您工作。

文档符号的问题是另一个问题,您将在文档中生成注释,但控制哪些内容作为代码中的注释以及哪些内容进入文档中是没有办法的,因为您有许多 ///。但我想这应该是可以在文档生成工具中进行配置的问题。


实际上,使用 /// 更省事,因为它会在回车后自动添加注释。而 // 则需要手动添加到每一行。 - yu_ominae

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接