C#EmptyStatementC#LanguageSpecification定义了EmptyStatement语法生成,它允许我做这样的事情:staticvoidMain(string[]args){;;;为什么Microsoft会在C#语言中包含此语法生成?它有效吗?while(GetWhitespace(textStream));我个人永远不会使用Whitespace。如果出于某种奇怪的原因我想玩代码高尔夫并编写类似while(Foo(x++))的东西;我更倾向于使用{};作为“无所事事的声明”。我认为这更清楚。几乎是历史原因。使用{}无所不能。更新:我只是想到了一个可能的用例。在调试版本中,它允许您在某处放置一个断点,以保证您可以在没有任何副作用的情况下中断。如果断点周围的代码特别复杂,它会很有用。更新更新:我的错误是错误的。这是行不通的。它只是将断点移动到下一条语句。多累啊。这有两个目的:while(DoSomething());和voidM(){if(someCondition)gotoexit;//...出口:;还有很多其他的。这是一个有用的设备,不需要随时完成,但需要声明。C#从C系列继承了很多东西,您可以在其中执行类似for(i=0;iorwhile(testSomeCondition());之类的操作,即运行一个空循环体,其中“内容”在括号中优点和危险是可以讨论的,这些都是C编程世界中非常常见的编程习惯用法,所以这种向后兼容性使得C/C++/Java程序员更容易学习C#。它允许代码块IFDEF输出,并且周围的代码仍在构建中。例如if(true){#if(DEBUG)System.Console.WriteLine("调试注释");#endif}如果你不喜欢括号,你可以把它写成一个空块:if(true)#if(DEBUG)System.Console.WriteLine("Debugcomment")#endif;好习惯与否,有些人使用这个:while(!SomeCondition);//为什么Microsoft会在C#语言中包含此语法生成?这个问题的主要答案是:C#是一种类C语言,使不同开发人员的生活更轻松MS决定使大部分基本语法元素与其他类C语言兼容。这很好。这是一个假设,但我认为它适用于编译器的基本语法。将此与集合论联系起来,“空集”存在于每个集合中。那;实际上定义了一组词法操作,这些操作总是必须被定义;这也是接受空语句的基本情况。如果(b1)如果(b2)否则;否则//编码这个;这会很痛苦。但这也不是编写ifs的最佳方式。但可以接受。埃里克·利珀特是个好人。大多数情况下,我认为这是因为它不会造成任何伤害并简化了语法处理。另外,为什么在不需要的时候限制人们?就其价值而言,一个好的经验法则是,您应该遍历在调试器中编写的每一行代码,对于每条可能的执行路径至少一次对于每条可能的执行路径ref:可能是错误的空语句,所以一些天才可以写for(;;)而不是while(true)。喜欢面试测试。想象一下,您有一些代码想要使用新函数进行扩展:voidDoSomething(){//...NewMethod();现在您介绍一个名为NewMethod的新成员。但是,您没有时间正确实现它并将其留空:publicvoidNewMethod(){}一段时间后,您终于可以实现该成员的代码,而无需担心在哪里以及如何调用它,因为它已经完成前。您还可以创建一个不实现的接口。这样你只能定义做什么,而不是如何做。另一种可能性是拥有一个通常什么都不做的虚拟成员,但在极少数情况下(某些特定实现)您希望该方法返回特定值。请参考这篇文章,例如:无文虚方法以上就是C#学习教程:C#空语句的全部内容。如果对大家有用,需要进一步了解C#学习教程,希望大家多加关注---本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
