C#索引器是一种特殊的属性,它可以使用数字或字符串来访问对象的内部数据。它可以用来替代数组,从而使代码更加灵活,易于理解。C#中的索引器允许你在一个对象中定义多个不同的“键”(例如字符串或数字),并将这些键映射到不同的值。
C#中的索引器可以用来实现多态性,因为它允许你在不同的对象上使用相同的语法来访问不同的数据。例如,你可以使用相同的语法来访问一个数组中的元素,也可以使用相同的语法来访问一个字典中的键/值对。
C#中的索引器还可以带来很多好处。例如,它可以带来更好地性能表现(因为它不需要分配内存即可运行)、更好地代码重用、更好地代码可读性、更好地代码扩展性、更好地代码测试性能、减少内存占用量、减少代码量、减少bug出现机会。
public class MyClass { private string[] myArray = new string[10]; public string this[int index] { get { return myArray[index]; } set { myArray[index] = value; } } public string this[string key] { get { return myArray[int.Parse(key)]; } set { myArray[int.Parse(key)] = value; } } // 示例 C# 索引器 }
索引器提供了一个类似数组的语法来访问类或结构中的元素。
索引器与属性类似,但可通过索引参数访问,而不是属性名称。
字符串类有一个索引器,它允许您通过int索引访问其每个char值:
string s = "hello";
Console.WriteLine (s[0]); // "h"
Console.WriteLine (s[3]); // "l"
使用索引器的语法与使用数组的语法相似,除了index参数可以是任何类型。
索引器具有与属性相同的修饰符。
要编写索引器,请定义一个名为this的属性,在方括号中指定参数。
例如:
class MyWord {
string[] words = "this is a test".Split();
public string this [int wordNum] // indexer
{
get {
return words [wordNum];
}
set {
words [wordNum] = value;
}
}
}
以下是我们如何使用此索引器:
MyWord s = new MyWord();
Console.WriteLine (s[3]);
s[3] = "CSS";
Console.WriteLine (s[3]); // CSS
类型可以声明多个索引器,每个索引器具有不同类型的参数。
索引器也可以采用多个参数:
public string this [int arg1, string arg2] {
get { ... } set { ... }
}
如果省略set存取器,索引器将变为只读。
C#抽象类抽象类是表示抽象概念的特殊类。例如,Integer是一个具体而Number是抽象的。形状是抽象的,而圆形是具体的。一个声明为...
C#继承的成员隐藏继承的成员基类和子类可以定义相同的成员。例如:public class A {public int Counter = 1; } public class B ...
C#GetType和typeofC#中的所有类型都在运行时由System.Type的实例表示。有两种基本方法来获取System.Type对象:在实例上调用Get...
C#ToString ToString 方法返回类型实例的默认文本表示。此方法被所有内置类型覆盖。例子这里有一个使用int类型的ToString方法的...