为什么VisualStudio在用“注释选择”注释多行选择时,会走单行注释?我一直对VisualStudio中的注释选择选项(Ctrl+K、Ctrl+C)有点好奇。当我注释这个方法的实现时,我使用单行注释格式。privatevoidFoo(){//Barb=newBar();当我在这里评论来自构造函数的参数(行的一部分)时,我使用分隔评论格式。privatevoidFoo(Quxq){Barb=newBar(/*q*/);}在注释整个方法时产生以下内容://privatevoidFoo()//{//Barb=newBar();//}我觉得在最后一种情况下,分隔注释格式会更合适,因为规范说:单行注释延伸到源代码行的末尾。定界注释可能跨越多行。有谁知道为什么在VisualStudio中注释掉多行选择时选择这种格式作为默认格式?这有一些问题:如果在任何代码行中有*/,它将不起作用:privatevoidFoo(Quxq){//我们在这里使用“*/image/*”标志来仅查找图像Barb=newBar("一些通配符:*/image/*");}Comment:/*privatevoidFoo(Quxq){//我们在这里使用“*/image/*”标志来仅查找图像Barb=newBar("Somewildcard:*/image/*");}*/如果你在已经包含定界注释的部分点击“注释选择”,那么试图用定界注释包装代码将不起作用:/*privatevoidFoo(Quxq){/*Somemultiline*comment*/酒吧b=新酒吧();}*/但是很好,我们可以通过插入多个定界注释和单行注释来解决这个问题:/*privatevoidFoo(Quxq){/*Somemultiline*comment*///*//*Barb=newBar();}*/有点难看,但它有效。如果您遇到注释代码,您是否能够立即识别代码部分是什么以及注释部分是什么?另外,如果你点击“取消注释选择”命令,你知道你会得到什么吗?更进一步,想象一下,如果您对这条评论进行评论,它会变得更加丑陋和难以理解。如果你的文本中有*/你正在评论,那么(在我看来)更糟糕的是解决方法/转义评论:privatevoidFoo(Quxq){//weuse"*/image/*"flaghereto只查找图像Barb=newBar("Somewildcard:*/image/*");}转换为:/*privatevoidFoo(Quxq){//我们在这里使用“**//*/image/*”标志来仅查找图像Barb=newBar("Somewildcard:**//*/图像/*”);}/*将上面混淆的注释代码与现有的单行实现进行比较://privatevoidFoo(Quxq)//{///*Somemultiline//*comment//*///Barb=newBar();//}//privatevoidFoo(Quxq)//{////我们在这里使用“*/image/*”标志来仅查找图像//Barb=newBar("Somewildcard:*/image/*");//}这样做的好处是代码几乎是1:1之前的样子,只是在前面加了//字符。如果您进一步评论或取消评论,它仍然是完全可读的并且仍然是完全可预测的。嵌套的单行注释或嵌套的定界注释都没有错。也许到最后,从IDE的角度来看,其实很简单:“注释选择”就是在每一行加上//前缀,“取消注释选择”就是把前面的//去掉。解析代码/注释或解析不正确的语法代码/注释都没有错。据我所知,多行注释是C的神器,大多数C#程序员更喜欢使用//注释样式。如果在嵌套结构中多次使用,多行样式/**/可能会造成混淆,因此比单行样式更容易出错。有关详细信息,请参阅此问题。多行注释已在C#中更改但未在VSIDE中实现,您可以创建自己的或查找扩展。C#现在使用/***/进行多行注释,并且还有各种内置规则来说明其工作方式。看这个链接:https://msdn.microsoft.com/en-us/library/5fz4y783.aspx以上是C#学习教程:WhydoesVisualStudiotakeasingle-linecommentwhenusing"CommentSelection"tocommenta多线选择?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
