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

C# 声明初始化和对象构造初始化之间的区别,c#,class,constructor,initialization,C#,Class,Constructor,Initialization,可能重复: 这两门课有什么不同吗 public class Test { public Guid objectId = Guid.NewGuid(); } public class Test2 { public Guid objectId; public Test2() { objectId = Guid.NewGuid(); } } 我很好奇它们之间是否有速度或性能上的差异。一种方法比另一种更可取吗?就我个人而言,我更喜欢第一个,因

可能重复:

这两门课有什么不同吗

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

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

我很好奇它们之间是否有速度或性能上的差异。一种方法比另一种更可取吗?就我个人而言,我更喜欢第一个,因为它使用的行数较少,但除非它们在执行方面几乎相同,否则这是一个不好的理由来选择一个而不是另一个。

从性能的角度来看,我认为这根本不重要。最重要的是要始终如一。这样,您和所有阅读代码的人都可以轻松地跟随。我认为在第一个场景中,如果您使用重载构造函数,那么成员将在所有构造函数中初始化。第二种情况需要显式初始化所有构造函数中的成员,或者专门调用默认构造函数(或另一个也初始化成员的构造函数)以进行初始化

我认为从性能的角度来看,这两个方面几乎相同,但我认为这是一个简单性与灵活性的问题。在第一个场景中,您获得了更多的简单性,但是如果需要,您将失去不在构造函数版本中初始化成员的能力


迈克

威廉,你的问题与ASP.NET无关。对于控制台程序也可以问同样的问题。谁在乎一种方法是否更有效?在您的代码速度慢到需要评测之前(在这种情况下,您将自己知道答案),正确的方法是选择可读性最好的代码。有关此讨论,请参阅最佳实践问题。