属性:
在 C# 语言里,属性早已经是“第一公民”。?从C#1.0的发布以来,经过多次强化,使得属性有了更多更好的表现。你可以使用getter 和 setter 函数指定不同的访问限制。使用隐式(implicit)属性——即不显式声明私有字段来实现代替数据成员可以极大降低代码量。如果你还是使用public 变量(variables)在你的类中,请停下来换成属性的方法!属性是C#语言基本元素,可以像访问数据成员的一样访问,但却是方法实现的。
索引器
在 C# 中,索引器(Indexer)是一种特殊类型的属性,允许你通过类的实例访问类中的元素,就像访问数组一样。索引器允许类的实例使用类似数组索引的语法来访问元素,提供了更灵活的访问方式。
所有索引器必须使用this关键字声明。在C#中你不能自己命名索引器。所以一个类型的索引器必须有不同的参数列表来避免歧义。几乎所有的属性的功能都适合用索引器。索引器可以是 virtual或 abstract ;索引器的 setters 和 getters 可以不同的访问限制。不过,你不能像创建隐式属性那样创建隐式索引器。
//以下是带有索引器的类
internal class IndexerClass
{
private List<string> elements = new List<string>();
//索引器声明
public string this[int index]
{
get
{
// 如果索引超出当前元素数量,返回默认值或抛出异常,具体取决于需求
if (index < 0 || index >= elements.Count)
{
return "Index out of range";
}
return elements[index];
}
set
{
while(index >= elements.Count)
{
elements.Add(null);
}
elements[index] = value;
}
}
}
用例测试:
static void Main(string[] args)
{
IndexerClass indexerClass = new IndexerClass();
indexerClass[0] = "NO1. 乌兹";
indexerClass[1] = "NO2. 销户";
indexerClass[2] = "NO3. 厂长";
WriteLine(indexerClass[0]);//查找索引0
WriteLine(indexerClass[1]);//查找索引1
WriteLine(indexerClass[3]);//查找索引2(不存在)
}
输出结果: