标签:
字段和方法是最重要的类成员类型,字段是数据成员,方法是函数成员
字段是隶属于类的变量
方法是具有名称的可执行代码块
声明方法最简单语法如下
虽然常量成员变现的像一个静态量,但不能将常量声明为static
属性是代表类的实例或类中的一个数据项成员
与字段类似,属性有如下特征
然而和字段不同,属性是一个函数成员
set访问器总是
get访问器总是
属性访问器不不局限于仅仅对关联的后备字段传进传出参数,访问器能进行任何计算,或不执行任何计算,唯一必须的行为是get访问器要返回一个属性类型的值
下面的代码,set访问器在设置关联字段之前实现过滤,如果输入大于100,就设为100
int _x = 10; int X { get { return _x;} set { _x = value > 100 ? 100 : value; } }
下列代码展示了只读属性
int _x = 3; int _y = 4; int Z//只读属性 { get { return (_x+_y);} }
Z的值只能基于_x和_y的值产生
自动实现的属性要点如下
属性也可以声明为static。静态属性的访问器和所有静态一员,具有以下特点
字段可以用readonly修饰,其作用类型于字段声明为const,一但值被设定就不能改变
this关键字在类中使用,是对当前实例的引用。它只能被用在下列类成员的代码块中
this用于下列目的
索引器是一组get和set的访问器,与属性类似。
下图展示了一个类的索引器的表现形式,该类可以获取和设置string型值
索引器和属性很多方面是相似的。
关于索引器,还有一些注意事项
声明索引器的语法如下
声明索引器类似于声明属性
set访问器有如下语法
get访问器有如下语义
下列代码为类X声明一个索引器
class X { public string A; //调用字段1 public string B; //调用字段2 public string C; //调用字段3 public string this[int index] { set { switch(index) { case 0: A = value; break; case 1: B = value; break; case 2: C = value; break; default: throw new ArgumentOutOfRangeException("index"); } } get { switch (index) { case 0: return A; case 1: return B; case 2: return C; default: throw new ArgumentOutOfRangeException("index"); } } } }
默认情况下,成员的两个访问器有和成员自身相同的访问级别。也就是说,如果一个属性有public访问级别,那么它的两个访问器都有同样的访问级别,对索引器也一样。
不过,你可以为两个访问器分配不同的访问级别。如下代码演示了一个非常常见的列子,那就是为set访问器声明为private,为get访问器声明为public。get之所以是public的,是因为属性的访问级别就是public的。
在这段代码中,尽管可以从类的外部读取该属性,但却只能在类的内部设置它。
class Person { public string Name { get; private set; } public Person(string name) { this.Name = name; } }
访问器的访问修饰符有几个限制。最重要的限制如下
下图阐明了访问级别的层次。访问器的访问级别在图表中的位置必须比成员的访问级别的位置低
标签:
原文地址:http://www.cnblogs.com/Nomads/p/4821866.html