C# 笔记——索引器
Posted 贝尔格里尔斯
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# 笔记——索引器相关的知识,希望对你有一定的参考价值。
索引器允许类或者结构的实例按照与数组相同的方式进行索引取值,索引器与属性类似,不同的是索引器的访问是带参的。
索引器和数组比较:
(1)索引器的索引值(Index)类型不受限制
(2)索引器允许重载
(3)索引器不是一个变量
索引器和属性的不同点
(1)属性以名称来标识,索引器以函数形式标识
(2)索引器可以被重载,属性不可以
(3)索引器不能声明为static,属性可以
一个简单的索引器例子
以字符串作为下标,对索引器进行存取
索引器的重载
多参索引器
using System; using System.Collections; //入职信息类 public class EntrantInfo { //姓名、编号、部门 private string name; private int number; private string department; public EntrantInfo() { } public EntrantInfo(string name, int num, string department) { this.name = name; this.number = num; this.department = department; } public string Name { get { return name; } set { name = value; } } public int Num { get { return number; } set { number = value; } } public string Department { get { return department; } set { department = value; } } } //声明一个类EntrantInfo的索引器 public class IndexerForEntrantInfo { private ArrayList ArrLst;//用于存放EntrantInfo类 public IndexerForEntrantInfo() { ArrLst = new ArrayList(); } //声明一个索引器:以名字和编号查找存取部门信息 public string this[string name, int num] { get { foreach (EntrantInfo en in ArrLst) { if (en.Name == name && en.Num == num) { return en.Department; } } return null; } set { //new关键字:C#规定,实例化一个类或者调用类的构造函数时,必须使用new关键 ArrLst.Add(new EntrantInfo(name, num, value)); } } //声明一个索引器:以编号查找名字和部门 public ArrayList this[int num] { get { ArrayList temp = new ArrayList(); foreach (EntrantInfo en in ArrLst) { if (en.Num == num) { temp.Add(en); } } return temp; } } //还可以声明多个版本的索引器... } public class Test { static void Main() { IndexerForEntrantInfo Info = new IndexerForEntrantInfo(); //this[string name, int num]的使用 Info["张三", 101] = "人事部"; Info["李四", 102] = "行政部"; Console.WriteLine(Info["张三", 101]); Console.WriteLine(Info["李四", 102]); Console.WriteLine(); //this[int num]的使用 foreach (EntrantInfo en in Info[102]) { Console.WriteLine(en.Name); Console.WriteLine(en.Department); } } }
以上是关于C# 笔记——索引器的主要内容,如果未能解决你的问题,请参考以下文章