当创建属性时,编译器实际上产生特别的 get_PropName 和/或 set_PropName 访问器方法(PropName 是属性的名称)。大多数编译器会理解这些特别的方法,从而允许开发人员使用特别的属性语法来访问这些方法。但是,不需要遵从通用语言规范(Common Language Specification,CLS)的编译器完全支持属性,编译器只需要支持调用这些特别的访问器方法。
另外,不完全支持属性的编译器可能需要稍微不同的语法来定义和使用属性。例如,托管扩展的 C++ 需要使用 _property 关键字。
返回页首
索引属性
有些类型(例如 System.Collections.SortedList)公开元素的逻辑列表。为了轻松访问这种类型的元素,类型可以定义索引属性(也称为索引器,indexer)。图 3 显示索引属性的一个示例。使用这种类型索引器非常简单:
BitArray ba = new BitArray(14);
for (int x = 0; x < 14; x++) {
// Turn all even numbered bits on
ba[x] = (x % 2 == 0);
Console.WriteLine("Bit " + x + " is " + (ba[x] ? "On" : "Off"));
}
在图 3 所示的 BitArray 示例中,索引器有一个 Int32 的参数:bitPosition。所有索引器必须至少有一个参数,而且可能有两个或者更多的参数。这些参数(和返回类型)可以是任意类型。常见的情况是,创建一个将 String 作为参数的索引器,用于在一个关联数组中查找值。类型可以提供多个重载的索引器,只要它们的原型不同。
象设置属性一样,设置索引器访问器方法包含一个隐含的参数 value,它表示访问器被调用时新的期望值。BitArray 设置访问器显示这个使用的 value 参数。
延伸阅读
文章来源于领测软件测试网 https://www.ltesting.net/