c#对象初始化器
以往在对对象属性进行初始化时我们一般会使用构造方法的形式对对象属性进行初始化,如
代码语言:javascript复制 class Program
{
static void Main(string[] args)
{
Student student = new Student(15, "spring","男");
}
class Student
{
public int age { get; set; }
public string name { get; set; }
public string sex { get; set; }
public Student()
{
}
public Student(int age, string name,string sex)
{
this.age = age;
this.name = name;
this.sex = sex;
}
}
}
而使用对象初始化器
代码语言:javascript复制 class Program
{
static void Main(string[] args)
{
Student student = new Student()
{
age = 25,
name = "java",
sex = "男"
};
}
class Student
{
public int age { get; set; }
public string name { get; set; }
public string sex { get; set; }
public Student()
{
}
public Student(int age, string name,string sex)
{
this.age = age;
this.name = name;
this.sex = sex;
}
}
}
对象初始化器与构造方法的异同点
相同点:都可以完成对象属性的初始化 不同点
1.构造函数具有强制性,而对象初始化器没有强制性
这个强制性怎么说,首先在用构造函数时,对每个属性赋值,必须和构造函数声明的变量属性相同。例如: 正确的调同时这样的
代码语言:javascript复制Student student = new Student(15, "spring","男")
我们不能写成
代码语言:javascript复制Student student = new Student(15, "男","spring")`
这里构造函数强制了我们变量的顺序位置 ,而对象初始化器没有强制,变量可以在任意位置进行赋值 这样是对的
代码语言:javascript复制Student student = new Student()
{
age = 25,
name = "java",
sex = "男"
};
这样也是对的
代码语言:javascript复制Student student = new Student()
{
name = "java",
age = 25,
sex = "男"
};
2.对象初始化器只能完成属性的初始化,而构造函数可以完成任何需要的初始化操作。
如构造方法可以在对象创建时读取文件,或者进行一些数据的判断,而在对象初始化器中只能进行赋值的操作
3.对象初始化器是在创建对象的时候使用,而构造方法是写在类里面
对象初始化器无需写方法一类的可以直接赋值,而构造方法需要自己编写