广州门户网站制作,网页设计作品欣赏分析,厂西建设厅网站,金融网站模板素材索引器作用#xff1a;可以让我们以中括号的形式访问自定义类中的元素。
规则自己定#xff0c;访问时和数组一样
适用于#xff0c;在类中有数组变量时使用#xff0c;可以方便的访问、进行逻辑处理 可以重载#xff0c;结构体也支持索引器 一#xff1a;索引器的语法…索引器作用可以让我们以中括号的形式访问自定义类中的元素。
规则自己定访问时和数组一样
适用于在类中有数组变量时使用可以方便的访问、进行逻辑处理 可以重载结构体也支持索引器 一索引器的语法
使用索引器要做好备注方便调用者知道调用的是什么类型的数据。因为索引器可以重载需要明确声明的索引器所关联的变量是什么(其实就是用不同的参数来区分关联的变量)
使用索引器时一般是调用数组数据注意可在getset内部做好判空和越界判断
1.1 使用索引器关联数组变量
class Person{private Person[] friends;//一般要有配套的数组变量public Person this[int index, ... ]{//内部的写法和规则和索引器相同get{return friends[index]};set{friends[index] value;}//value代表传入的值。在这里就是new的Person类型的变量}
}
------------
void Main(){Person p new Person();p[0] new Person();//调用了setConsole.WriteLine(p[0]);//调用了get
}
//只做语法演示代码本身没有实际意义1.2 直接调用数组变量
class Person{private Person[] friends;
}
------------
void Main(){Person p new Person();p.friends[0] new Person();Console.WriteLine(p.friends[0]);
}
//只做语法演示代码本身没有实际意义二索引器的使用
2.1 索引器的完整写法、索引器的重载
class Person{private string name;private int age;private int[,] array; //声明索引器public int this[int i, int j] //public string this[string str]{//内部的写法和规则和索引器相同get{return array[i, j];}set{array[i, j] value;//value代表传入的值这里是Person类型的}}private Person[] friends;//索引器重载2public Person this[int index]{ get{//可以写逻辑的 根据需求来处理这里面的内容if( friends null ||friends.Length - 1 index){return null;}return friends[index];}set{//value代表传入的值if( friends null ){friends new Person[] { value };}else if(index friends.Length - 1){//自己定了一个规则 如果索引越界 就默认把最后一个朋友顶掉friends[friends.Length - 1] value;}friends[index] value;}}//索引器重载3public string this[string str]{get{switch(str){case name:return this.name;break;case age:return this.age.ToString();break;}return ;}
}class Program{static void Main(string[] args){Console.WriteLine(索引器);Person p new Person();p[0] new Person();Console.WriteLine(p[0]);p[0, 0] 10;}}
}
2.2 索引器的应用示例
class Test{private string[] name new string[10];public string this[int index]{get{ return name[index];}set{ name[index] value;}}
}Main(){Test tnew Test();t[0]张三;t[1]李四;Console.WriteLine(t[0]);Console.WriteLine(t[1]);
}
class Week{private string[] days{Mon,Tues,Wed,Thurs,Fri,Sat,Sun};private int GetDay(string day){int i0;foreach(string temp in days){if(tempday)return i1;i;}return -1;}public int this[string day]{get{ return GetDay(day);}}
}
Main(){Week wnew Week();Console.WriteLine(w[Thurs]);Console.WriteLine(w.GetDay(Thurs));
}
索引器练习题