当前位置:  开发笔记 > 编程语言 > 正文

C#中的分号

如何解决《C#中的分号》经验,为你挑选了4个好方法。

为什么C#中每一行末尾都需要分号?为什么编译器不能知道每条线的结束位置?



1> Mehrdad Afsh..:

行结束符字符将使您能够跨多行中断语句.

另一方面,像VB这样的语言有一个行继续符.我个人认为用分号终止语句而不是继续使用下划线更清晰.


您多久会在多行中继续进行长时间的陈述?要求使用分号或其他字符来终止一行是针对一种非常罕见的情况进行优化的.使用续行更有意义.
VB.Net 10在绝大多数场景中不再需要行继续符.
这不只是"多久一次".实际上,在现代LINQ时代,我做了很多次.但是,重新格式化代码真的很难.忘记延续性很常见.插入分号是完全没有问题的(就像在行尾按Enter键一样).
@Mehrdad,我最近发现有趣的是,在MS工作的5种纯托管语言中,只有1种是大括号语言和分号(C#vs F#,VB.Net,IronPython和IronRuby)

2> TheSoftwareJ..:

不,编译器不知道换行是用于语句终止,也不应该.如果您愿意,它允许您将语句带到多行.

看到:

string sql = @"SELECT foo
               FROM bar
               WHERE baz=42";

或者大方法重载怎么样:

CallMyMethod(thisIsSomethingForArgument1,
             thisIsSomethingForArgument2,
             thisIsSomethingForArgument2,
             thisIsSomethingForArgument3,
             thisIsSomethingForArgument4,
             thisIsSomethingForArgument5,
             thisIsSomethingForArgument6);

相反,分号也允许多语句行:

string s = ""; int i = 0;


绝对没有理由在一行中允许多个语句.而你的另外两个例子非常差,因为它们不需要在Python等语言中终止语句.
您可以在没有语句终止符的情况下明确处理所有示例.

3> recursive..:

这是多少陈述?

for (int i = 0; i < 100; i++) // <--- should there be a semi-colon here?
Console.WriteLine("foo")

需要使用分号来消除歧义.


没有含糊之处.一种语言可以使用分号字符分隔语句,而另一种语言使用换行符.歧义在哪里?

4> WakeUpScream..:

因此除了内部标识符和关键字等之外,空格并不重要.

推荐阅读
贴进你的心聆听你的世界
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有