Pet*_*rdk 27 c# oop constructor properties
我想知道,在C#中构造新对象的首选方法是什么?
参加一个Person课程:
public class Person
{
private string name;
private int age;
//Omitted..
}
Run Code Online (Sandbox Code Playgroud)
我应该创建它来使用:
New Person("name", 24);
Run Code Online (Sandbox Code Playgroud)
要么
New Person() { Name = "name", Age = 24 };
Run Code Online (Sandbox Code Playgroud)
这只是一个品味的问题,还是有充分的理由使用一个而不是另一个?
我可以想象一个人应该只使用构造函数中的必需字段和可选字段而不是构造函数参数,而是使用属性.
我是对的吗?
Jef*_*tes 40
首选方式取决于您的设计.
构造函数属性用于对象需要的项目才能正确构造.也就是说,对象在初始化时应具有的任何属性都需要在构造函数中(除非您创建工厂或构建器模式,否则在调用构造函数之后通常不需要部分初始化对象)构造函数除了工厂/构建器之外都是隐藏的.
属性初始化器最适合在特定用例所需的构造函数之后进行其他配置,但对象不需要初始化.
例如,您可以拥有一个代表一个人的对象.一个人需要初始化名称和年龄,但他们所居住的地址是可选配置.因此,名称和年龄是构造函数参数,地址是读/写属性.
Person johnDoe = new Person("John Doe", 24) { Address = "42 Adams Street" };
Run Code Online (Sandbox Code Playgroud)
我总是在你应该将值传递给构造函数的基础上工作,这对于该对象必须存在于有效状态.
在你的例子中,你可以说没有年龄的新人不能存在,所以应该传递给构造函数.
如果您的工作基于对象应该为实际工作实体建模,那么确定使任何对象有效所需的最小值 - 无论您将它们设置为默认值还是通过构造函数传递值.