c# - 在我的方法中有一个 block 是什么意思?

标签 c# .net

我以前有以下代码:

 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/

相关文章:

c# - 弹出窗口中的文本框未在 WPF 应用程序中获得焦点

c# - mongodb获取集合名称c#

c# - 设置项目权限

c# - 添加依赖注入(inject)后,Add-Migration 出现错误

c# - Windows Phone 8 中的弹出窗口

c# - 如何在 linq 的动态列表列表中查找重复项?

c# - 如何在不使用 ASP.NET 的情况下在 C# 中创建 REST 服务

c# - 如何使用 System.Cryptography 解密 EncryptedAssertion

.net - 在 Powershell 2 中声明第三方程序集类型的通用列表

c# - c++\cli 项目依赖的 c++ dll 未复制到 c# 输出目录