zoukankan      html  css  js  c++  java
  • 《Inside C#》笔记(六) 属性、数组、索引器

    一 属性

    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]直观的。

  • 相关阅读:
    05
    04
    03
    02
    01
    drf 频率类
    drf 视图家族
    drf 之 群改,单改接口
    drf 序列化
    drf 之模块
  • 原文地址:https://www.cnblogs.com/zhixin9001/p/7067472.html
Copyright © 2011-2022 走看看