浅谈C#索引器
什么是C#索引器
C#索引器是一种特殊的属性,它允许类或结构使用类似于数组访问其实例的元素。在使用索引器时,可以通过索引来访问类或结构中定义的元素。在C#中,索引器是由get和set访问器定义的特殊属性,可以通过类或结构的名称来访问。
索引器语法
以下是C#索引器的基本语法:
public datatype this[int index]
{
get { /* get block */ }
set { /* set block */ }
}
C#索引器由以下部分组成:
public
:可访问性修饰符指定了索引器的可见性。datatype
:索引器的返回类型指定了索引器返回的值的数据类型。this[int index]
:用于在访问器中访问对象数组中的元素的实例化语法。{ get { /* get block */ } set { /* set block */ } }
:get和set访问器块定义了获取和设置索引值并更新数据的逻辑。
C#索引器的示例
以下是两个示例,演示如何在C#中使用索引器:
示例1: 使用字符串数组
class StringIndexer
{
private string[] array = new string[100];
public string this[int i]
{
get { return array[i]; }
set { array[i] = value; }
}
public string this[string name]
{
get { return array[Array.IndexOf(array, name)]; }
set
{
int index = Array.IndexOf(array, name);
if (index != -1)
array[index] = value;
}
}
}
class Program
{
static void Main(string[] args)
{
StringIndexer s = new StringIndexer();
s[0] = "Hello";
s[1] = "World";
Console.WriteLine(s[0]); // Output: Hello
Console.WriteLine(s["World"]); // Output: World
}
}
在上面的示例中,我们创建一个名为StringIndexer
的类,使用两个索引器“this[int i]”和“this[string name]”,每个索引器使用get和set访问器来获取和设置字符串数组中的元素。例如,s [0] =“Hello”可以设置偏移为0的元素,并使用s ["World"]获取名为“World”的元素。
示例2: 使用自定义索引
class Department
{
private string name;
public Employee[] employees = new Employee[5];
public Department(string name)
{
this.name = name;
employees[0] = new Employee("Linda", 23);
employees[1] = new Employee("Allen", 25);
employees[2] = new Employee("James", 27);
employees[3] = new Employee("Megan", 30);
employees[4] = new Employee("Taylor", 32);
}
public Employee this[int index]
{
get
{
return employees[index];
}
}
public Employee this[string name]
{
get
{
foreach (Employee e in employees)
{
if (e.Name == name)
{
return e;
}
}
return null;
}
}
}
public class Employee
{
public string Name;
public int Age;
public Employee(string name, int age)
{
Name = name;
Age = age;
}
public override string ToString()
{
return "Name: " + Name + ", Age: " + Age;
}
}
class Program
{
static void Main(string[] args)
{
Employee e = new Employee("Linda", 23);
Department d = new Department("Software");
Console.WriteLine(d[1].ToString()); // Output: Name: Allen, Age: 25
Console.WriteLine(d["Linda"].ToString()); // Output: Name: Linda, Age: 23
}
}
在上面的示例中,我们创建了一个名为“Department”的类,包含了一个由五个Employee对象组成的数组。该类使用两个索引器“this[int index]”和“this[string name]”来访问该数组。例如,d[1]可以返回偏移为1的Employee对象,并且如果在Employee数组中找到名为“ Linda”的对象,d["Linda"]则可以返回该对象。
总结
通过上述示例,我们可以看出,索引器在C#中是一个非常方便的特性。通过使用索引器,我们可以轻松地访问类或结构的实例中的元素,就像数组元素一样。此外,索引器也可以作为一个重载运算符来增加对象的多用途性。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:浅谈C#索引器 - Python技术站