我是C#的新手,在阅读代码时遇到了一些看起来很奇怪的地方,比如类方法被定义为:
/*!*/
protected override OptionsParser/*!*/ CreateOptionsParser()
protected override void ParseHostOptions(string/*!*/[]/*!*/ args)
很遗憾,/*!*/
无法在谷歌上搜索到。那它是什么意思?
我是C#的新手,在阅读代码时遇到了一些看起来很奇怪的地方,比如类方法被定义为:
/*!*/
protected override OptionsParser/*!*/ CreateOptionsParser()
protected override void ParseHostOptions(string/*!*/[]/*!*/ args)
很遗憾,/*!*/
无法在谷歌上搜索到。那它是什么意思?
这可能是将Spec#风格的注解引入非Spec#构建的尝试。在Spec#中,!注解表示值不为空。作者可能想表明返回值、args数组和args中所有元素都是非空值。
Spec#链接:
Spec#概述:
Spec#是由微软研究项目创建的.Net语言。它是C#语言的扩展,试图将代码合同嵌入类型系统中,最突出的特点是非空类型(在类型名称后面用!表示)、检查的异常和前/后条件。
Contract.Ensures(Contract.Result<OptionsParser>() != null);
,最好在相关文档中进行说明。这样做可以在保证原意不变的前提下,使内容更加通俗易懂。 - Sam Harwell这是一个包含 '!' 的注释。
任何被 /* */ 包围的内容都将被视为注释,在代码编译时会被忽略。
我不确定C#是否有特殊的标记,但是在任何支持开放/关闭、多行注释标记的语言中,我都会使用类似的技巧,以便能够通过单个字符更改来快速注释和取消注释多行代码:
/*!*/
this is live code (and will probably cause a compilation error)
/*!*/
/*!* /
this is commented code (and should never cause a compilation error)
/*!*/
< p >使用!
的原因是因为像/**
这样的结构是文档工具中常用的标记。
当语言支持单行注释标记//
(并像C++和Java一样实现它们)时,还有其他技术:
///* - opening comments can be commented-out so what follows isn't a comment.
this is live code
//*/ - closing comment are not commented-out by single-line comments.
因此,您可以删除第一个单行注释标记//
,以产生一种“切换”:
/* this is now commented.
this is also commented.
//*/ this line is live code.
这是一个带有'!'的注释。也许程序员想确保您注意到第一个方法返回了OptionsParser,而第二个方法接收了一个字符串数组,而不仅仅是一个字符串。
您可以删除它们,它们将继续正常工作 =)
这只是一个分隔注释;可能你的程序员只是标记了那些需要稍后讨论的点。
/* is start comment
*/ is end comment
everything between is the comment
you can even tell that SO highlights that area as a comment
就像大家所说的那样,这是一条注释。此外,我认为 '!' 用于标记。它似乎有助于识别感兴趣的点,并起到了视觉上的作用。