Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.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#教科书中遇到了一个空语句的例子 代码: public void empty() { ; } 一些快速的谷歌搜索发现这是一个冗余功能,我看不出它的用途,因为它似乎毫无意义 我很想知道这什么时候有用,即使它已经过时,它是否仍然被使用到现在?在给定的示例中,它是毫无意义的和/或装饰性的 空语句在需要语句但无事可做的地方是“有用的”,例如 while (condition_with_side_effects) ; 由于所需的副作用,这将与大多数编码准则或最佳实践不匹配 将其视为C.

我在C#教科书中遇到了一个空语句的例子

代码:

public void empty()
{
  ;  
}
一些快速的谷歌搜索发现这是一个冗余功能,我看不出它的用途,因为它似乎毫无意义


我很想知道这什么时候有用,即使它已经过时,它是否仍然被使用到现在?

在给定的示例中,它是毫无意义的和/或装饰性的

空语句在需要语句但无事可做的地方是“有用的”,例如

 while (condition_with_side_effects) ;
由于所需的副作用,这将与大多数编码准则或最佳实践不匹配


将其视为C.的遗留物。

在给定示例中,它是毫无意义和/或装饰性的

空语句在需要语句但无事可做的地方是“有用的”,例如

 while (condition_with_side_effects) ;
由于所需的副作用,这将与大多数编码准则或最佳实践不匹配


把它看作是C语言的一个遗留问题。

可能就像方法存根(签名)或单元测试一样。如果你在教科书中找到它,那么它为什么会出现在那里会有上下文——为什么不与我们分享这个上下文呢?也许如果你有一个while循环,一旦满足条件就会中断,你想做的就是等待。然后
empty()
可能比
更好请参见&@PaulF:是的,这是一个空语句(仅限分号),但OP将其包装在一个方法中。他在问这个方法是否有意义。但是文档中也提到了用例,所以链接很有用。可能就像方法存根(签名)或单元测试一样,如果你在教科书中找到它,为什么它会出现在那里会有一个上下文-为什么不与我们分享这个上下文呢?也许如果你有一个while循环,只要满足条件就会中断,你想做的就是等待。然后
empty()
可能比
更好请参见&@PaulF:是的,这是一个空语句(仅限分号),但OP将其包装在一个方法中。他在问这个方法是否有意义。但是文档中也提到了用例,所以这个链接很有帮助。谢谢,这很有意义,我想我应该能够理解它,因为它实际上是一个非常简单的概念。我假设大多数开发人员只是将语句留空,而不是使用分号?带有副作用的条件你不需要副作用。。。对外部事件进行糟糕的轮询就足够了。@benbants使用空语句可能有很多原因,而不仅仅是
while()
建议的原因。并非所有这些都是隐含的“坏习惯”(您需要逐一分析)。但它们可能都非常罕见。例如,
while(!File.Exists(“SomeFile”)几乎可以接受。外部事件是创建文件。您不能以任何其他方式执行此代码。我可能会像(…){Thread.Sleep(100)}
那样编写它,但这就是我要做的:-)@benbants没有
Thread.Sleep(…)
程序会不断轮询操作系统是否存在该文件。这对电脑来说非常耗时。使用
线程。睡眠(…)
检查之间将有100毫秒(0.1秒)的“暂停”。100ms是我选择的一个随机数,必须选择它来平衡对外部事件的响应需求和不做无用工作(持续检查文件的存在)的需求,这几乎是可以接受的-你不是认真的。你不应该像那样绑线。任何形式的改进(bool标志,CancellationToken)都会消除这个空语句。谢谢,这很有意义,我想我应该能够理解它,因为它实际上是一个非常简单的概念。我假设大多数开发人员只是将语句留空,而不是使用分号?带有副作用的条件你不需要副作用。。。对外部事件进行糟糕的轮询就足够了。@benbants使用空语句可能有很多原因,而不仅仅是
while()
建议的原因。并非所有这些都是隐含的“坏习惯”(您需要逐一分析)。但它们可能都非常罕见。例如,
while(!File.Exists(“SomeFile”)几乎可以接受。外部事件是创建文件。您不能以任何其他方式执行此代码。我可能会像(…){Thread.Sleep(100)}
那样编写它,但这就是我要做的:-)@benbants没有
Thread.Sleep(…)
程序会不断轮询操作系统是否存在该文件。这对电脑来说非常耗时。使用
线程。睡眠(…)
检查之间将有100毫秒(0.1秒)的“暂停”。100ms是我选择的一个随机数,必须选择它来平衡对外部事件的响应需求和不做无用工作(持续检查文件的存在)的需求,这几乎是可以接受的-你不是认真的。你不应该像那样绑线。任何形式的改进(bool标志、CancellationToken)都会消除空语句。