C# 什么';使用new class()和new class{}从类创建对象有什么区别?
我有以下课程:C# 什么';使用new class()和new class{}从类创建对象有什么区别?,c#,.net,class,oop,object,C#,.net,Class,Oop,Object,我有以下课程: public class TestClass { public string ClassName { get; set; } } 这样做的区别是什么: var instance = new TestClass(); 做 var instance = new TestClass { }; 我认为您需要包含()来调用对象的构造函数。这是什么意思 编辑:有人能解释一下哪个是最好的吗?或者如果一个人忽略了构造器,它的优点还是缺点 Ed
public class TestClass {
public string ClassName {
get;
set;
}
}
这样做的区别是什么:
var instance = new TestClass();
做
var instance = new TestClass { };
我认为您需要包含()来调用对象的构造函数。这是什么意思
编辑:有人能解释一下哪个是最好的吗?或者如果一个人忽略了构造器,它的优点还是缺点
Edit2:对不起,如果我问了一些已经回答过的问题。这个区别对我来说有点清楚,但我真的不明白如何混合匹配()和{},因为有时()会被忽略,我想知道什么时候可以这样做第一个示例实例化了一个新实例 第二个示例通过语法实例化一个新实例 它们最终都创建了一个新实例 如果需要或希望在实例化期间设置类的公共属性或字段,则可以使用后者:
var instance = new TestClass { ClassName = "TestingInstance" };
相对于
var instance = new TestClass();
instance.ClassName = "TestingInstance";
在创建新对象和设置许多属性时,本质上是“语法糖”让您的生活变得更轻松(对于某些开发人员来说更明确)
使用对象初始化时,参数
()
是可选的,但大括号{}
和语句结尾分号代码>是必需的第二段代码是用于对象初始化的简写语法
如果要同时设置对象的属性,可以使用第二种语法,如下所示:
var x = new SomeObject
{
Property1 = "What's this?",
Property2 = 42
};
您还可以组合:
var x = new SomeObject("Some constructor parameter", 17, true)
{
OtherProperty = 42
};
代码可以大致转换为:
var temp = new SomeObject("Some constructor parameter", 17, true);
temp.OtherProperty = 42;
var x = temp;
第二个例子是{},它允许您在对象上设置公共属性和字段。例如:
System.Drawing.Point p = new System.Drawing.Point
{
X = 3,
Y = 5
};
当{}中没有任何内容时,几乎没有理由使用{}over()。这只是一种方便的方法,可以在新创建的对象上设置属性,而不必键入十几次instance.MyProperty=…
代码>