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=…