C#:初始化类变量

dev*_*ull 4 .net c# constructor class-design

可能重复:
C#成员变量初始化; 最佳实践?

这是初始化类变量的正确方法.[1]和[2]之间有什么区别?

//[1]
public class Person
{
   private int mPersonID = 0; 
   private string mPersonName = "";
}
Run Code Online (Sandbox Code Playgroud)

要么

//[2]
public class Person
{
     private int mPersonID = 0; 
     private string mPersonName = "";

     public Person()
     {
         InitializePerson();
     }

     private void InitializePerson()
     {
          mPersonID = 0;
          mPersonName = "";
     }
}
Run Code Online (Sandbox Code Playgroud)

Bro*_*ass 5

作为声明的一部分分配了默认值的实例变量将在构造函数运行之前分配此值,从外部看,1)和2)之间的行为没有明显差异,这主要是样式问题.

您还在InitializePerson()方法中引入了另一种方法2) - 如果您有多个构造函数,然后所有构造函数都可以使用相同的公共初始化方法(保持代码DRY),这将是有益的.

编辑以回复评论,请参阅MSDN:

在调用对象实例的构造函数之前立即初始化字段.如果构造函数指定了字段的值,它将覆盖字段声明期间给出的任何值.