《Inside C#》笔记(六) 属性、数组、索引器

一 属性

a)
属性可用来隐藏类的里边成员,对外提供可控的存取接口。属性相当给产生若干语言的getter、setter方法,只是以起来更加惠及一点,而且查看相应之IL码可以观看,属性的原形也着实是法。

b)
通过单独供get,可以为性只读。只写属性为可,但没就此了。

c)
属性除了用来控制对类成员的拜会外,还好以get或set的早晚经过编码进行部分外加的动作。

d) 属性也可以于接续、重写。

 

二 数组

a)
在C#饱受,所有数组都继承自System.Array类。数组也是目标,所以声明的数组在使前须实例化。

b)
数组的Length属性指的是数组中存有的元素个数,这同一触及在差不多维数组中尤其要留心。如果想取得某同履之要素个数,可以使用.GetLength(<行数>)方法。通过Rank属性可以抱数组的维数。

c) 不规则数组(Jagged
Array),不规则数组的元素是屡屡组,每个数组的维数和长短可以不相同。声明方式如下:

 C语言 1

 

C语言用类似这样的措施来声称多维数组,但C#扬言多维数组的不二法门为:

 C语言 2

设避混淆。

 

三 索引器

a)
通过索引器可以像以数组一样用类似成员。索引器与性类似,都提供对类成员的某种操作办法。

b)
索引器的宣示方式和性能略微有差异,主要在于索引器的号只能是this,因为要拿看似名称当作数组来使用,所以无可知起另外的名号

 C语言 3

 

c)
索引器可以有重载,使用不同之参数组合来安不同的目录方式。另外,据说索引器不可知是静态的,本来想在以给索引内容也宣称也静态就可,但试了一晃还当真不行,网络直达有人的分解是:CLR支持静态索引器,但C#不支持。

 

dC语言)
要留意索引器的运用场所(目前菜鸟的自己还尚未遇到适合之场地),在当的地方以好带来方便,但对索引器的滥用却会带来各种题材,比如可读性的下跌,invoice.Name显然是比较invoice[2]直观的。