首页 > Linux操作系统 > Linux操作系统 > .net框架笔记——属性
一.无参属性
通常被称为属性.
面向对象设计和编程的其中一个原则是数据封装.
public class Employee
{
private string _name;
private int _age;
public string Name
{
get
{
return _name;
}
set
{
this._name = value;
}
}
public int Age
{
get
{
return _age;
}
set
{
if (value < 0)
{
throw new ArgumentOutOfRangeException("年龄不可能为负数");
}
else
this._age = value;
}
}
}如果不封装,比如上面的年龄:就会有如下代码:
所以尽可能的封装字段.
当定义一个属性时,编译器会在生成的托管模块中产生以下3项:
1.一个表示属性的get访问器的方法.只有在为属性定义了get访问器方法时,才有这一项.
2.一个表示属性的set访问器的方法,只有在为属性定义了set访问器方法时,才有这一项.
3.一个位于托管模块元数据中的属性定义,不管是只读,只写,或者是读写属性都有这一项.
属性限制:
第一:属性不定义存储位置,所以不能以ref或out参数的形式传递给方法.
第二:属性不能重载.
第三:当调用get访问器时,属性不应该再改变存储变量的状态.
二:含参属性
在C#中称为索引器.通过索引器访问的每个元素都应该和索引器的基类型一致.参数index不必须是int类型,但因为索引器通常用于数组索引,所以index通常为int.
set访问器能接收隐含参数value,该参数包含赋给指定下标的元素的值.
使用索引器有两个限制.第一,因为索引器没有定义存储位置,所以索引器产生的值不能作为 ref参数或out参数传递给方法.第二:索引器必须是类的实例成员,不能被声明为static类型.
三:对访问器使用访问限定符
第一:只能改变set或get访问器之一的访问限定符,而不能是两者.
第二:访问限定符必须比属性或索引器的访问限制更严格.
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/12639172/viewspace-465883/ ,如需转载,请注明出处,否则将追究法律责任。