《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]直观的。
《Inside C#》笔记(六) 属性、数组、索引器的更多相关文章
- (转)c# 属性与索引器
属性是一种成员,它提供灵活的机制来读取.写入或计算私有字段的值. 属性可用作公共数据成员,但它们实际上是称为“访问器”的特殊方法. 这使得可以轻松访问数据,还有助于提高方法的安全性和灵活性. 一个简单 ...
- C#中方法,属性与索引器
C#中方法,属性与索引器: TODO: 1,关于系统中常常出现的通过某一字段,查询相应实体信息(可能是一条字段或一条数据和一组泛型集合) 解说篇:1,方法,2,属性3.索引器 1.方法(1.依据状态编 ...
- C#学习笔记(十六):索引器和重载运算符
二维数组如何映射到一维数组 重载运算符 1.算术运算符 2.关系运算符, < 和 > 成对重载 using System; using System.Collections.Generic ...
- javaScript数组的三种属性—数组索引、数组内置属性、数组自定义属性
JS数组也是一种对象. 我们用JavaScript处理的所有东西,都可以视为是一种对象. JavaScript中有两种数据类型,基本类型数对象类型,但是基本类型基本都是包括在对象类型之中的. 数组.函 ...
- set,get方法(属性,索引器)
很多时候我们不可以把一些字段暴露出来允许别人调用和修改,为了隐藏这些字段又便于加限制的使用,在面向对象编程中一般采用写get set函数的办法,比如: //字段_age, "_"表 ...
- Elasticsearch笔记六之中文分词器及自定义分词器
中文分词器 在lunix下执行下列命令,可以看到本来应该按照中文"北京大学"来查询结果es将其分拆为"北","京","大" ...
- C# to il 9 Properties and Indexers(属性和索引器)
A field is simply a memory location, whereas, a property is a collection of methods. Aproperty is re ...
- 接口、索引器、Foreach的本质(学习笔记)
接口 什么是接口? 接口代表一种能力,和抽象类类似但比抽象类的抽象程度更高! 接口的定义: public interface IEat//定义一个接口 { void Eat(string food); ...
- C#属性-索引器-里氏替换-多态-虚方法-抽象-接口-泛型-
1.属性 //属性的2种写法 public class person { private string _name; public string Name { get { return _name; ...
随机推荐
- 如何使用spring配合mybatis配置多个数据源并应用?
使用多数据源的场景应该是很多的,如操作同一台服务器上不同的数据库,或者多地机器上的相同或不相同数据库. 虽然涉及到不同数据库时,我们也许可以通过跨库操作的方式,如 other.user 使用同一数据源 ...
- String类、常量池、字符串比较
String类.常量池.字符串比较 一:String类 1.String类又称作不可变字符序列 2.String位于java.lang包中,Java程序默认导入 ...
- Maven - 实例-4-依赖传递
这里以Eclipse创建Maven工程来演示. Setp-1 创建Maven项目 File ---> New ---> Maven Project ---> 默认勾选"Us ...
- Docker - 国内镜像的配置及使用
Docker国内镜像 DaoCloud - Docker加速器 阿里云 - 开发者平台 微镜像 - 希云cSphere 网易蜂巢 阿里云的Docker加速器 阿里云 - 开发者平台:https://d ...
- js中数字直接点方法会报错,如1.toString()
Number(11).toString() "11" var num = 111; undefined num.toString() "111" .toStri ...
- 测试工具之Jmeter(各部件简单介绍)
jmeter可以到官网下载: http://jakarta.apache.org/ 下载后解压即可使用,双击如下文件打开Jmeter界面: $JMETER_HOME\apache-jmeter-3.1 ...
- 第三章:Activity的生命周期
一:Activity的生命周期方法 Android提供了很多Activity的生命周期方法,比如我们常用的onCreate.onPause.onResume等.这里主要介绍粗粒度的周期方法,诸如onP ...
- Android Studio 签名打包
项目开发完成后,如果要分发到Google play或者各个第三方渠道,签名打包是必不可少的,下面详细介绍整个签名打包过程,及如何查看签名. 1.创建签名文件 选择要打包的项目-点击Build-在弹出的 ...
- 如何才能够系统地学习Java并发技术?
微信公众号[Java技术江湖]一位阿里Java工程师的技术小站 Java并发编程一直是Java程序员必须懂但又是很难懂的技术内容. 这里不仅仅是指使用简单的多线程编程,或者使用juc的某个类.当然这些 ...
- SQL 必知必会·笔记<4>使用通配符过滤数据
LIKE操作符 通配符(wildcard): 用来匹配值的一部分的特殊字符. 百分号(%)通配符 最常使用的通配符是百分号(%).在搜索串中,%表示任何字符出现任意次数: SELECT prod_id ...