实例字段的初始化与局部变量的初始化

2023-12-01

我一直想知道为什么在下面的例子中可以not初始化实例字段(依赖于它将具有默认值)并访问它,而局部变量显然must被初始化,即使我将其初始化为默认值,它无论如何都会得到......

  public class TestClass
  {
    private bool a;

    public void Do()
    {
      bool b; // That would solve the problem: = false;
      Console.WriteLine(a);
      Console.WriteLine(b); //Use of unassigned local variable 'b'
    }
  }

对于局部变量,编译器对流程有很好的了解 - 它可以看到变量的“读取”和变量的“写入”,并证明(在大多数情况下)第一次写入将在第一次读取之前发生。

实例变量的情况并非如此。考虑一个简单的属性 - 你如何知道有人会在获得它之前设置它?这使得执行合理的规则基本上是不可行的 - 所以要么你必须确保all字段在构造函数中设置,或者允许它们具有默认值。 C# 团队选择了后一种策略。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

实例字段的初始化与局部变量的初始化 的相关文章

随机推荐