在c#中没有()的类初始化

时间:2016-05-20 09:55:55

标签: c# constructor initialization

在c#中我曾经通过调用默认构造函数来初始化我的类。您可以在课程名称

之后提及()
var class = new MyClass()
{
   Property= 1,
   Property2 = "test"
}

但上次我看到没有()的示例。喜欢这个

var class = new MyClass
{
   Property= 1,
   Property2 = "test"
}

有和没有()有什么区别吗?

3 个答案:

答案 0 :(得分:2)

没有区别。如果使用resharper,则将此()标记为冗余。

您可以使用()或不使用,这取决于您的风格。

答案 1 :(得分:2)

此功能称为对象初始化程序,它已在C#3.0中引入。

使用它时,()是多余的,因此两个代码示例之间没有区别

答案 2 :(得分:1)

正如您在IL代码中看到的那样,它们是相同的:

 internal class Program
    {
        public class MyClass
        {
        public int Property
        {
            get;
            set;
        }

        public string Property2
        {
            get;
            set;
        }
    }

    private static void Main(string[] args)
    {
        Program.MyClass expr_06 = new Program.MyClass();
        expr_06.Property = 1;
        expr_06.Property2 = "test";
        Program.MyClass expr_20 = new Program.MyClass();
        expr_20.Property = 1;
        expr_20.Property2 = "test";
    }
}