C#中简单索引器的实现
2010-06-24 01:04
323 查看
索引器允许类或者结构的实例按照与数组相同的方式进行索引。索引器类似属性,但不同之处在于它们的访问器采用参数。它可以像数组那样对对象采用下标。它提供了通过索引方式方便地访问类的数据信息的方法。
C#并不将索引类型限制为整数,所以我们可以通过访问器的重载,实现整数索引或者字符串索引。
重载索引器时,要保证形参的数量或形参类型至少有一不同。这一点同C#中方法重载貌似没有什么区别。
下面我们就通过简单的例子,实现整数索引和字符串索引。
在这个例子中,我们需创建两个类 --> Student Students
Student类中,包含学生基本信息(属性)和一个方法SayHi()
Students类中,包含我们要创建的两种索引器,一个Student类类型的数组
Code:
/// <summary>
/// Student类 具备学生基本属性 一个方法SayHi()
/// </summary>
public class Student
{
//构造函数
public Student(string name,int age,string hobby)
{
this.Name = name;
this.Age = age;
this.Hobby = hobby;
}
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
private int age;
public int Age
{
get { return age; }
set { age = value; }
}
private string hobby;
public string Hobby
{
get { return hobby; }
set { hobby = value; }
}
// 方法
public void SayHi()
{
Console.WriteLine("大家好,我是{0},今年{1},我喜欢{2}",Name,Age.ToString(),Hobby);
}
}
Code:
/// <summary>
/// Students类,含有两种简答索引器
/// </summary>
public class Students
{
//构造函数
public Students()
{
stu[0] = new Student("rose",20,"dancing");
stu[1] = new Student("jack",21,"football");
stu[2] = new Student("mimi",20,"reading");
}
public Student[] stu = new Student[3]; //Student类型的数组
//简单整数索引器
public Student this[int index]
{
get
{
return stu[index];
}
}
//简单字符串索引器
public Student this[string name]
{
get
{
int i;
bool found = false;
for (i = 0; i < stu.Length; i++)
{
if (stu[i].Name == name)
{
found = true;
break;
}
}
if (found)
{
return stu[i];
}
else
{
return null;
}
}
}
}
Code:
class Program
{
static void Main(string[] args)
{
Students stu = new Students(); //实例化一个Students类的对象
stu[0].SayHi(); //通过索引查找
stu["jack"].SayHi(); //通过姓名查找
}
}
以上,我们就实现了一个简单的索引器~~~
C#并不将索引类型限制为整数,所以我们可以通过访问器的重载,实现整数索引或者字符串索引。
重载索引器时,要保证形参的数量或形参类型至少有一不同。这一点同C#中方法重载貌似没有什么区别。
下面我们就通过简单的例子,实现整数索引和字符串索引。
在这个例子中,我们需创建两个类 --> Student Students
Student类中,包含学生基本信息(属性)和一个方法SayHi()
Students类中,包含我们要创建的两种索引器,一个Student类类型的数组
Code:
/// <summary>
/// Student类 具备学生基本属性 一个方法SayHi()
/// </summary>
public class Student
{
//构造函数
public Student(string name,int age,string hobby)
{
this.Name = name;
this.Age = age;
this.Hobby = hobby;
}
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
private int age;
public int Age
{
get { return age; }
set { age = value; }
}
private string hobby;
public string Hobby
{
get { return hobby; }
set { hobby = value; }
}
// 方法
public void SayHi()
{
Console.WriteLine("大家好,我是{0},今年{1},我喜欢{2}",Name,Age.ToString(),Hobby);
}
}
Code:
/// <summary>
/// Students类,含有两种简答索引器
/// </summary>
public class Students
{
//构造函数
public Students()
{
stu[0] = new Student("rose",20,"dancing");
stu[1] = new Student("jack",21,"football");
stu[2] = new Student("mimi",20,"reading");
}
public Student[] stu = new Student[3]; //Student类型的数组
//简单整数索引器
public Student this[int index]
{
get
{
return stu[index];
}
}
//简单字符串索引器
public Student this[string name]
{
get
{
int i;
bool found = false;
for (i = 0; i < stu.Length; i++)
{
if (stu[i].Name == name)
{
found = true;
break;
}
}
if (found)
{
return stu[i];
}
else
{
return null;
}
}
}
}
Code:
class Program
{
static void Main(string[] args)
{
Students stu = new Students(); //实例化一个Students类的对象
stu[0].SayHi(); //通过索引查找
stu["jack"].SayHi(); //通过姓名查找
}
}
以上,我们就实现了一个简单的索引器~~~
相关文章推荐
- C#实现一个简单的工作队列调度器
- C#实现简单获取及设置Session类
- 【C#】使用TcpListener和TcpClient实现简单通信
- C#实现U3D简单寻路
- C#简单的通用基础字典实现方法
- Wed页动态下拉菜单-----C#简单实现
- C# 使用NPOI 实现Excel的简单导入导出
- C#简单实现顺序队列与链队列
- C#简单嵌套flash读取数据的实现代码
- C#简单代码实现窗体最小化到托盘运行
- C# 最简单实现文件附件在线预览的方法
- C#实现简单的登录界面
- C#基础系列——委托实现简单设计模式
- sql server 关于表中只增标识问题 C# 实现自动化打开和关闭可执行文件(或 关闭停止与系统交互的可执行文件) ajaxfileupload插件上传图片功能,用MVC和aspx做后台各写了一个案例 将小写阿拉伯数字转换成大写的汉字, C# WinForm 中英文实现, 国际化实现的简单方法 ASP.NET Core 2 学习笔记(六)ASP.NET Core 2 学习笔记(三)
- 源代码:C#实现简单的Tail
- C#实现简单ORM
- c#关于网页内容抓取,简单爬虫的实现。(包括动态,静态的)
- c#简单实现二维数组和二维数组列表List<>的转置
- c#简单实现记事本功能
- 病毒及流氓软件自我复制的简单实现(C#)