Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么是/*!*/用C#表示什么意思?_C# - Fatal编程技术网

什么是/*!*/用C#表示什么意思?

什么是/*!*/用C#表示什么意思?,c#,C#,我是C#新手,正在用/*阅读代码*/在看起来很奇怪的地方。例如,实例类方法定义为: protected override OptionsParser/*!*/ CreateOptionsParser() protected override void ParseHostOptions(string/*!*/[]/*!*/ args) 不幸的是/**/不可googleable。这是什么意思?这是一条包含“!”的评论 /**/中包含的任何内容都是注释,在代码编译时将被忽略。这可能是试图将规范样式的

我是C#新手,正在用
/*阅读代码*/在看起来很奇怪的地方。例如,实例类方法定义为:

protected override OptionsParser/*!*/ CreateOptionsParser()
protected override void ParseHostOptions(string/*!*/[]/*!*/ args)

不幸的是
/**/不可googleable。这是什么意思?

这是一条包含“!”的评论


/**/中包含的任何内容都是注释,在代码编译时将被忽略。

这可能是试图将规范样式的注释添加到非规范构建中。这个Spec#中的注释表示该值不为空。作者可能试图指出返回值、args数组和args中的所有元素都始终是非null值

/* is start comment
*/ is end comment

everything between is the comment
you can even tell that SO highlights that area as a comment
规格链接:

快速规范#概述:


Spec#是一种通过Microsoft研究项目创建的.Net语言。它是C语言的扩展,试图将代码契约嵌入到类型系统中。最突出的是不可为null的类型(在类型名称后用!表示)、选中的异常和前置/后置条件

这是一个带有“!”的评论。可能程序员希望确保您注意到第一个方法返回OptionsParser,第二个方法接收字符串数组,而不仅仅是字符串


您可以删除它们,它们将继续正常工作();可能您的程序员只是标记了稍后讨论的要点。

正如大家所说,这是一条评论。此外,在我看来,“!”用于划界。它似乎有助于识别感兴趣的点,并且像糖果一样吸引眼球。

我不知道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):

因此,您可以删除第一个单行注释标记,
/
,以生成一种“切换”:


好的,这很有趣;为什么有人要在那里发表这样的评论?你在哪里看到这段代码的?它是教程还是项目的一部分?可能是自动生成的代码?您可能希望在您的前任使用的编辑器中查找原因。有时,在奇数处使用注释来避免突出显示编辑器的解析问题。(LPC和它的#’-lambda语法曾经是这种情况)只是为了清楚,就语言而言,它没有任何意义。这只是一个包含感叹号的注释。但是把它放在那里的程序员的意思是什么,这是一个很好的问题。@DownVoter-DownVoter-你为什么不说为什么评论被否决了?同样,StackOverflow开发人员为什么不能添加否决响应的人或强制说明否决的原因?另一种方法是放置
Contract.surevers(Contract.Result()!=null),理想情况下会出现在随附的文档中。@JaredPar:可以补充一些详细信息吗?什么是规格建造?从目前为止的答案来看,这是唯一一个似乎对正在发生的事情有线索的地方。@jsbueno,添加了对Spec#的快速概述。最好的解释是我添加的链接。非常详细的文档可以在那里找到。@JaredPar我没有否决你,但我真的很讨厌这样做,即使在“活动”部分也没有实现一种方法来查看谁否决了你,或者强制说明否决的原因。这种情况经常发生在我身上,当然downvoter并没有解释..Spec#是C#的超集,它具有形式化规范的结构,并允许形式化静态验证(以及额外的运行时检查)。您可以注释掉特定于规范的语言构造(例如
-Types)并获得有效的C,这似乎在您的案例中发生过。关于更多的信息,我建议跟随Jared的链接。那些括号确实很有趣!我听说有些人在提交一个答案时习惯于对其他答案进行向下投票——也许这就是这里发生的事情。这是stackoverflow的坏处之一——一个患有精神障碍的男人/女孩可以在这里做非常疯狂的事。另一方面,人们可能会反对“多行评论”只需一个字符的评论。+1:不回答问题,但这是一个非常讨厌的^W大黑客:-)
///* - 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.