我一直想知道关于Visual Studio中注释选择选项的小事( Ctrl + K , Ctrl + C )。
当我评论此方法的实现时,使用单行注释格式。
private void Foo()
{
//Bar b = new Bar();
}
当我在这里评论来自构造函数的参数(部分行)时,使用了分隔的注释格式。
private void Foo(Qux q)
{
Bar b = new Bar(/*q*/);
}
在评论整个方法时会产生以下结果:
//private void Foo()
//{
// Bar b = new Bar();
//}
我认为在最后一种情况下,分隔的评论格式会更合适,因为规范说:
单行注释会延伸到源代码行的末尾。 定界评论可能跨越多行。
在Visual Studio中评论多行选择时,是否有人知道为什么选择此作为默认格式?
答案 0 :(得分:4)
这样做会有一些问题:
如果任何代码行中都有>>> import random
>>> def hwset(m, n):
... return random.sample(xrange(1, m + 1), n)
...
>>> hwset(100, 5)
[25, 58, 2, 29, 57]
>>> hwset(100, 5)
[84, 55, 80, 65, 47]
>>> sorted(hwset(100, 5))
[1, 25, 77, 81, 92]
>>> sorted(hwset(100, 5))
[34, 46, 59, 66, 76]
,那么它就无法运作:
*/
评论:
private void Foo(Qux q)
{
//we use "*/image/*" flag here to find only images
Bar b = new Bar("Some wildcard: */image/*");
}
如果您正在点击"评论选择"在已经包含分隔注释的部分上,然后尝试用分隔注释包装代码将不起作用:
/*
private void Foo(Qux q)
{
//we use "*/image/*" flag here to find only images
Bar b = new Bar("Some wildcard: */image/*");
}
*/
但很好,我们可以通过插入多个分隔注释和单行注释来解决这个问题:
/*
private void Foo(Qux q)
{
/* Some multiline
* comment
*/
Bar b = new Bar();
}
*/
有点难看,但它有效。如果您遇到了注释代码,您是否能够立即识别代码部分是什么以及注释部分是什么?此外,如果您点击"取消评论选择"命令,你知道你会得到什么吗?
更进一步,想象一下如果你评论这个评论,它会变得更加丑陋,更难以理解。
如果你的文字中有/*
private void Foo(Qux q)
{
/* Some multiline
* comment
*/
// */
/*
Bar b = new Bar();
}
*/
你正在评论,那么(在我看来)更糟糕的是解决方法/转义评论:
*/
转换为:
private void Foo(Qux q)
{
//we use "*/image/*" flag here to find only images
Bar b = new Bar("Some wildcard: */image/*");
}
将上述令人困惑的注释代码与现有的单行实现进行比较:
/*
private void Foo(Qux q)
{
//we use "**//*/image/*" flag here to find only images
Bar b = new Bar("Some wildcard: **//*/image/*");
}
/*
这样做的好处是代码几乎是1:1之前的样子,只是前缀为//private void Foo(Qux q)
//{
// /* Some multiline
// * comment
// */
// Bar b = new Bar();
//}
//private void Foo(Qux q)
//{
// //we use "*/image/*" flag here to find only images
// Bar b = new Bar("Some wildcard: */image/*");
//}
个字符。如果您进一步评论或取消评论,它仍然完全可读并且仍然完全可预测。没有任何问题,包括嵌套的单行注释或嵌套的分隔注释。
也许最后,从IDE的角度来看,真的很容易实现:"评论选择"意味着为每一行添加//
前缀,"取消注释选择"表示删除前面的//
。解析代码/注释或解析不正确的语法代码/注释时没有任何问题。
答案 1 :(得分:0)
有人向我描述了多行注释是来自C的工件,并且大多数C#程序员更喜欢使用//
样式的注释。
如果在嵌套结构中多次使用多行样式/**/
会变得混乱,因此比单行对应更容易出错。 See this question了解更多信息。
答案 2 :(得分:0)
多行注释在C#中已更改但未在VS IDE中实现,您可以创建自己的方式或查找扩展名。 C#现在使用/ ** * /进行多行注释,并且还有各种内置规则来说明它是如何工作的。 请看这个链接:https://msdn.microsoft.com/en-us/library/5fz4y783.aspx