C#基础——索引器
索引器在语法上方便创建客户端应用程序可将其作为数组访问的类、结构或接口。
索引器是在主要用于封装内部集合或数组的类型中实现的,使用this关键字。
-
class TempRecord { private float[] temps=new float[10]{56.2F, 56.7F, 56.5F, 56.9F, 58.8F, 61.3F, 65.9F, 62.1F, 59.2F, 57.5F}; public int Length { get{return temps.Length;} } public float this[int index] { get{return temps[index];} set {temps[index]=value;} } } public class MyClass { public static void Main() { TempRecord tempRecord=new TempRecord(); tempRecord[3]=58.3F; tempRecord[5]=60.1F; for(int i=0;i<tempRecord.Length;i++) { Console.WriteLine("Element #{0} = {1}", (i+1), tempRecord[i]); } Console.ReadLine(); } }
输出:
C#并不将索引类型限制为整数:
-
class DayCollection { string [] days={ "Sun", "Mon", "Tues", "Wed", "Thurs", "Fri", "Sat" }; private int GetDay(string testDay) { int i = 0; foreach (string day in days) { if (day == testDay) { return i; } i++; } return -1; } public int this[string day] { get{return (GetDay(day));} } } public class Program { public static void Main() { DayCollection week=new DayCollection(); Console.WriteLine(week["Fri"]); Console.WriteLine(week["Made-up Day"]); Console.ReadLine(); } }
输出:
在接口使用索引器:
-
public interface IIndexInterface { int this[int index] { get; set; } } class IndexClass:IIndexInterface { public int [] arr=new int[100]; public int this[int index] { get { if (index < 0 || index >= 100) { return 0; } else { return arr[index]; } } set { if (!(index < 0 || index >= 100)) { arr[index] = value; } } } } public class Program { public static void Main() { IndexClass test=new IndexClass(); test[2]=4; test[5]=32; for(int i=0;i<10;i++) { Console.WriteLine("Element #{0} = {1}", i, test[i]); } Console.ReadLine(); } }
输出: