无参属性
属性只是一个“高级字段”。与字段相比,属性封装了字段。
CLR为属性提供了一种机制,这种机制简化了编写过程,因此属性没有特殊行为,并成为自动属性:
public int Age { get设置;无参数属性只是语法糖。反编译后,编译器仍然会自动为我们生成get和set方法以及一个支持字段,本质上就是一两个方法,只是我们客户端的代码看起来更像一个字段。
只读和只写属性
只读:
public int Age { get}此时,该属性只是只读的。该属性的值初始化后,就不能再更改了。
带有逻辑的属性
我们可以通过添加代码来获取和设置属性的范围。
private int age; public int Age { get { return age; } set { if (value < 0) { throw new ArgumentOutOfRangeException("Age",value,"Age必须大于等于0"); } age = value; } }
私人年龄;public int Age { get { return age} set { if(value & lt;0){ throw new ArgumentOutOfRangeException(& # 34;年龄& # 34;,值,& # 34;年龄必须大于或等于0 & # 34;);}年龄=价值;} }
有参属性
参数属性也称为索引器,是一种重载[]运算符的方法,它允许对象以类似数组的方式访问。
类程序{ static void Main(string[]args){ my class my class = new my class();控制台。write(my class[1]);//Lisi控制台。read key();} }公共类my class { private string[]_ names = { & # 34;张三& # 34;, "李四& # 34;, "王武& # 34;, "刘钊& # 34;, "天齐& # 34;};public string this[int index]{ get { if(index & lt;0 | | index & gt= _names。length){ throw new argument exception();} return _ names[index];} set { _ names[index]= value;} } }
属性的意义
通过属性的封装,保留了与外界交互的能力,实现了可靠的读写机制。
比如ATM可以存取款,查询余额等。,而是为什么能做,怎么能做,比如钱是怎么吐出来的,我们不需要知道,只需要知道一些简单的操作步骤就能达到目的。通过封装,类型只需要向外部提供它应该知道的信息。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。