在 C# 中创建对象的实例时,有和没有 () 符号有什么区别?
What is the difference between with and without () symbol in creating an instance of an object in C#?
我有一个class产品
public class Product
{
public string Name { get; set; }
}
能否请您帮我解释一下下面两种创建 Product class 实例的区别?
var instanceOne = new Product
{
Name = "iPhone 4"
}
和
var instanceTwo = new Product()
{
Name = "iPhone 5"
}
谢谢
没有区别,它们是相同的(假设您打算初始化 Name
属性,而不是定义它,并且它不能是静态的),除了一个非常具体案例:
Product instanceOne = new()
{
Name = "arf"
};
如果您使用目标类型 new
,您必须使用 new() {...}
版本,因为 new {...}
定义了一个匿名类型。
两者没有区别
请注意 object initalisers 也允许指定构造函数参数。
class Cat
{
public Cat() {}
public Cat(string name) { Name = name; }
public string Name { get; set; }
public string Color { get; set; }
}
(...)
var lightning = new Cat(Name: "Lightning")
{
Color = "White"
};
var storm = new Cat
{
Name = "Storm",
Color = "Gray"
};
再多一点
另请注意
var storm = new Cat
{
Name = "Storm",
Color = "Gray"
};
与
不一样
var storm = new Cat();
storm.Name = "Storm";
storm.Color = "Gray";
前者的结果是:
var __a = new Cat();
__a.Name = "Storm";
__a.Color = "Gray";
var storm = __a;
以下示例中的 ()
是多余的:
var instanceTwo = new Product()
{
Name = "iPhone 5"
}
你可以只写:
var instanceTwo = new Product // <----- () deleted
{
Name = "iPhone 5"
}
我有一个class产品
public class Product
{
public string Name { get; set; }
}
能否请您帮我解释一下下面两种创建 Product class 实例的区别?
var instanceOne = new Product
{
Name = "iPhone 4"
}
和
var instanceTwo = new Product()
{
Name = "iPhone 5"
}
谢谢
没有区别,它们是相同的(假设您打算初始化 Name
属性,而不是定义它,并且它不能是静态的),除了一个非常具体案例:
Product instanceOne = new()
{
Name = "arf"
};
如果您使用目标类型 new
,您必须使用 new() {...}
版本,因为 new {...}
定义了一个匿名类型。
两者没有区别
请注意 object initalisers 也允许指定构造函数参数。
class Cat
{
public Cat() {}
public Cat(string name) { Name = name; }
public string Name { get; set; }
public string Color { get; set; }
}
(...)
var lightning = new Cat(Name: "Lightning")
{
Color = "White"
};
var storm = new Cat
{
Name = "Storm",
Color = "Gray"
};
再多一点
另请注意
var storm = new Cat
{
Name = "Storm",
Color = "Gray"
};
与
不一样var storm = new Cat();
storm.Name = "Storm";
storm.Color = "Gray";
前者的结果是:
var __a = new Cat();
__a.Name = "Storm";
__a.Color = "Gray";
var storm = __a;
以下示例中的 ()
是多余的:
var instanceTwo = new Product()
{
Name = "iPhone 5"
}
你可以只写:
var instanceTwo = new Product // <----- () deleted
{
Name = "iPhone 5"
}