在case语句中添加分号有什么意义吗?我看到失败的工作与预期的一样,并猜测分号被解释为空语句。在下面的javascript示例中,请参阅第一个case语句中的分号。
switch(a) {
case 2:;
case 3: alert('hello'); break;
default: alert('default hello');
}我也有兴趣了解C、C++和Java中与上述相关的最佳实践。我还看到一些文档指出,如果fall-through中的case语句包含语句,C#会抛出编译错误。像上面这样的空语句会在C#中触发错误吗?
发布于 2016-07-08 04:31:50
不,这没有任何区别。
我建议你不要使用它,因为在我看来,它会使代码不那么清晰。
但在C#中,这是一个错误。D也不允许;作为空语句,您必须使用{}。
发布于 2016-07-08 04:55:09
在C、C++和Java中,;不会为您做任何事情。如果你不需要它,就不要使用它。但是,如果您正在实现Duff's Device或一个变体,并给他们留下“失败”或“不中断”的注释,请务必给未来的代码读者一点好处。
在C#中
switch(a) {
case 2:;
case 3: Console.WriteLine("hello"); break;
default: Console.WriteLine("default hello");
}通过中断C#允许的少量fall来防止情况2和3执行相同的代码。
switch(a) {
case 2:
case 3: Console.WriteLine("hello"); break;
default: Console.WriteLine("default hello"); break;
}对于执行相同代码的情况2和3是有效的。
发布于 2016-07-08 04:34:40
最佳实践
通常不使用空语句。
像上面这样的空语句会在C#中触发错误吗?
是。
https://stackoverflow.com/questions/38254670
复制相似问题