初始化声明和对象构造之间的区别

时间:2010-07-13 18:35:54

标签: c# class constructor initialization

  

可能重复:
  Best Practice: Initialize class fields in constructor or at declaration?

这两个类之间有什么区别吗?

public class Test
{
    public Guid objectId = Guid.NewGuid();
}

public class Test2
{
    public Guid objectId;
    public Test2()
    {
        objectId = Guid.NewGuid();
    }
}

我很好奇他们之间是否有任何速度或性能差异。一种方法比另一种方法更受欢迎吗?我个人喜欢第一个更好,因为它使用更少的线,但除非它们实际上是相同的执行,这是一个不好的理由选择一个在另一个。

2 个答案:

答案 0 :(得分:0)

从表现的角度来看,我认为这根本不重要。最重要的是保持一致。通过这种方式,您和所有阅读代码的人都可以轻松跟进。

答案 1 :(得分:0)

我认为在第一个场景中,如果您使用重载的构造函数,则会在所有构造函数中初始化该成员。第二种情况要求您在所有构造函数中显式初始化成员,或者特别调用默认构造函数(或另一个也初始化成员的构造函数)以进行初始化。

从性能角度来看,我认为这两者基本相同,但我认为这是简单性与灵活性的关系。您在第一个场景中获得了更多的简单性,但是如果需要,您将无法在构造函数的版本中初始化成员。

麦克