C# 构造函数和属性赋值的区别

2024-12-03 11:48:51
推荐回答(4个)
回答1:

因为用属性赋值的时候有一个判断正整数的逻辑,如果超出范围就抛出异常。
这也是属性的一个作用:做访问器使用,可以过滤非法数据。

用构造函数赋值的时候直接对私有成员进行赋值,没有进行判断。

回答2:

new Person(-10);直接将-10赋给age字段,age类型为int允许为负
person1.Age = -10;会执行Age属性中的set的代码,显然它会检查范围,异常是 throw new Exception("Warning:The age is not between 0 and 100");抛出的

解决:
1.构造函数中改为对Age赋值,这样会检查范围
2.将age声明为uint类型,这只允许正值

回答3:

public Person(int newAge)
{
age = newAge;
}
//构造函数,直接对变量age赋值了,没有经过判断
//而person1.Age = -10;则走了属性的set方法,也就是经过了值的判断,所以会抛出异常

回答4:

public Person(int newAge)
{
age = newAge;
}

是对字段age赋值

而person1.Age = -10

是对属性Age赋值

age可以理解为局部变量
Age可以理解为公开变量