argumentoutofrangeexception

无参属性

属性只是一个“高级字段”。与字段相比,属性封装了字段。

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; } }

argumentoutofrangeexception私人年龄;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可以存取款,查询余额等。,而是为什么能做,怎么能做,比如钱是怎么吐出来的,我们不需要知道,只需要知道一些简单的操作步骤就能达到目的。通过封装,类型只需要向外部提供它应该知道的信息。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。

发表回复

登录后才能评论