Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# c中不带()的类初始化#_C#_Constructor_Initialization - Fatal编程技术网

C# c中不带()的类初始化#

C# c中不带()的类初始化#,c#,constructor,initialization,C#,Constructor,Initialization,在c#中,我曾经通过调用默认构造函数来初始化我的类。你可以在类名后面提到() var class = new MyClass() { Property= 1, Property2 = "test" } 但上次我看到的例子没有()。像这样 var class = new MyClass { Property= 1, Property2 = "test" } 使用()和不使用()有什么区别吗 没有区别。如果使用resharper,它会将此()标记为冗余 您可以使用(),也

在c#中,我曾经通过调用默认构造函数来初始化我的类。你可以在类名后面提到()

var class = new MyClass()
{
   Property= 1,
   Property2 = "test"
}
但上次我看到的例子没有()。像这样

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

使用()和不使用()有什么区别吗

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


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

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


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

此功能称为对象初始值设定项,它已在C#3.0中引入


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

此功能称为对象初始值设定项,它已在C#3.0中引入


当您使用它时,
()
是冗余的,因此您的两个代码示例之间没有差异,正如您在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";
    }
}

正如您在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";
    }
}

没有,没有。这是一回事。只是一个无参数构造函数的合成糖。@Sinatr不是dup。两个代码示例都是对象初始值设定项。@帕特里克霍夫曼,是的,谢谢,很快我就会学会仔细阅读问题;)根据问题,您可能需要使用参数调用构造函数,然后需要括号和参数。如果构造函数是无参数的,则括号是可选的。不,没有。这是一回事。只是一个无参数构造函数的合成糖。@Sinatr不是dup。两个代码示例都是对象初始值设定项。@帕特里克霍夫曼,是的,谢谢,很快我就会学会仔细阅读问题;)根据问题,您可能需要使用参数调用构造函数,然后需要括号和参数。如果构造函数是无参数的,则括号是可选的。