构造函数是初始化值还是CLR?

Uth*_*iah 1 .net c# clr constructor

请参阅下面的代码

我的问题是:我没有初始化的默认值eIdeName,但仍向属性初始化为默认值.

CLR这样做吗?

class Employee
{
    int _empId;
    String _eName;
    public Employee()
    {
        // I am not initializing the attributes here
    }
    public void Disp()
    {
        Console.WriteLine("Id:: {0}  Name:: {1}", _empId, _eName);
    }
}

class Program
{
     static void Main(string[] args)
     {
        new Employee().Disp();
     }
}
Run Code Online (Sandbox Code Playgroud)

Mar*_*ann 5

.NET中的所有值和对象都具有默认值.如果未指定显式值,则将使用默认值.

  • 对于对象,默认值为 null
  • 对于值类型,默认值为0(或者对应于0的内容,如Guid.Emtpy)

由于未使用值初始化字段,因此它们将获得默认值.

  • 它在创建变量时执行此操作.在这种情况下,它们是字段,因此在创建对象时会初始化它们. (2认同)
  • 编译器创建一个默认构造函数,以便您可以创建该类的实例; 例如,你可以编写`var e = new Employee();`如果`Employee`没有构造函数,你就不能这样做.它只是C#编译器为您提供的便利服务; 它与CLR无关.例如,在F#中,您总是必须为类指定构造函数,即使它们的构造函数没有执行任何操作. (2认同)