《Inside C#》笔记(六) 属性、数组、索引器
来源:互联网 发布:网络直播 法国VS德国 编辑:程序博客网 时间:2024/06/12 09:08
一 属性
a) 属性可用于隐藏类的内部成员,对外提供可控的存取接口。属性相当于有些语言的getter、setter方法,只是使用起来更加方便一点,而且查看对应的IL码可以看到,属性的本质也确实是方法。
b) 通过只提供get,可以让属性只读。只写属性也可以,但没有用过。
c) 属性除了用来控制对类成员的访问外,还可以在get或set的时候通过编码进行一些附加的动作。
d) 属性也可以被继承、重写。
二 数组
a) 在C#中,所有数组都继承自System.Array类。数组也是对象,所以声明的数组在使用前必须实例化。
b) 数组的Length属性指的是数组中所有的元素个数,这一点在多维数组中尤其要注意。如果想取得某一行的元素个数,可以使用.GetLength(<行数>)方法。通过Rank属性可以取得数组的维数。
c) 不规则数组(Jagged Array),不规则数组的元素是数组,每个数组的维数和长度可以不相同。声明方式如下:
C语言用类似这样的方式来声明多维数组,但C#声明多维数组的方式为:
要避免混淆。
三 索引器
a) 通过索引器可以像使用数组一样使用类成员。索引器与属性类似,都提供对类成员的某种操作方式。
b) 索引器的声明方式与属性略微有差别,主要在于索引器的名称只能是this,因为要把类名称当作数组来使用,所以不能有另外的名称
c) 索引器可以有重载,使用不同的参数组合来设置不同的索引方式。另外,据说索引器不能是静态的,本来想着将被索引内容也声明为静态就可以,但试了一下还确实不行,网络上有人的解释是:CLR支持静态索引器,但C#不支持。
d) 要注意索引器的使用场合(目前菜鸟的我还没遇到适合的场合),在恰当的地方使用可以带来方便,但对索引器的滥用却会带来各种问题,比如可读性的降低,invoice.Name显然是比invoice[2]直观的。
- 《Inside C#》笔记(六) 属性、数组、索引器
- 《Inside C#》笔记(三) 数据类型
- 《Inside C#》笔记(四) 类
- 《Inside C#》笔记(五) 方法
- 《Inside C#》笔记(七) Attribute
- 《Inside C#》笔记(八) 接口
- 《Inside C#》笔记(十四) 反射
- 索引器和数组、属性的比较
- C#索引器-索引器与数组属性的比较
- 索引器-索引器与数组属性的比较
- C#语法小知识(六)属性与索引器
- C#_构造器、属性、索引器
- C#类的属性和索引器
- TypeScript 学习笔记:属性索引器
- 《Inside C#》笔记(一) .NET平台
- 《Inside C#》笔记(二) 初识C#
- 《Inside C#》笔记(十一) 运算符重载
- 《Inside C#》笔记(十二) 委托与事件
- sqlite数据库的基本操作
- java中的过滤器
- 个人理解Java中String与StringBuffer类的区别
- 按位与运算符有啥用?
- java中如何实现分页跳页查询
- 《Inside C#》笔记(六) 属性、数组、索引器
- HDFS节点搭建(非HA的)、免密码登录
- JavaScript——鼠标点击事件
- 在word中怎么设置从中间某一页开始插入页码
- 乐观锁与悲观锁——解决并发问题
- BZOJ 3280: 小R的烦恼 费用流 多路增广
- 无服务器架构发布啦!
- 转 侵立删 java观察者模式与事件委托
- 地理学(第一、第二)定律