C# 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,它会将此()标记为冗余 您可以使用(),也
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。两个代码示例都是对象初始值设定项。@帕特里克霍夫曼,是的,谢谢,很快我就会学会仔细阅读问题;)根据问题,您可能需要使用参数调用构造函数,然后需要括号和参数。如果构造函数是无参数的,则括号是可选的。