我以前有以下代码:
public class Program
{
public static void Main(string[] args)
{
int i = 0;
while(condition)
{
.........
.........
if (condition)
{
i = 6;
Console.WriteLine("Inside Block :" +i);
}
else
{
i = 7;
Console.WriteLine("After block : " + i);
}
}
}
}
后来,我想我不需要任何条件,每次都想将6赋值给变量i
。所以我注释掉了代码,但这样做我犯了一个愚蠢的错误,所以现在我的代码如下所示:
公开课计划 {
public static void Main(string[] args)
{
int i = 0;
while(condition)
{
.........
.........
// a block without condition
{
i = 6;
Console.WriteLine("Inside Block :" +i);
}
}
}
}
如您所见,我只是错误地注释掉/删除了带有 if
条件的行,但忘记删除 block 。现在,这个 block 在这里意味着什么。无论如何它都会在我想要的时候执行,但为什么它在编译时没有给出任何错误?
我们这里有任何术语/概念吗?我知道 Java
中的 Initializer Block
但这不是这里发生的事情。它在多线程
环境中的工作方式会有所不同吗?
任何信息都会非常有帮助。
最佳答案
why it is not giving any error while compiling?
Do we have any terminology/concept here?
因为 C# 允许您这样做。 C# 语言规范第 1.5 节:
A block permits multiple statements to be written in contexts where a single statement is allowed. A block consists of a list of statements written between the delimiters
{
and}
.
实际上,您熟悉的 if 语句和 while 语句只需要在它们的 header 后有一个语句,并且由于在允许单个语句的地方允许使用 block ,因此您可以在此处编写一个 block 。
这些没有任何 header 的 block 与任何其他 block 一样工作。他们创建了一个新的范围。在 block 中声明的变量不能在 block 外访问。
关于c# - 在我的方法中有一个 block 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54664288/