C#中索引器,在一个类中有很多的同一类型成员的时候,比较适用索引器。

环境:我们假设有一个动物园,里边有很多动物。

用法:

1.先定义一个类,这是成员的类型。在这里就是要定义一个Animal类;

 

public class Animal
{
public string Name { get; set; }
}



 

2.再定义一个包含索引器的类,在这里是Zoo动物园类。

 

public class Zoo
{
private List<Animal> animals = new List<Animal>();
public Animal this[int index]
{
get{return animals[index];}
set{animals.Add(value);}
}
}


3.那么我们在主程序里就可以这么用:

 

 

class Program
{
static void Main(string[] args)
{
Animal a = new Animal();
a.Name = "老虎";
Animal b = new Animal();
b.Name = "大象";

Zoo z=new Zoo();
z[0] = a;
z[1] = b;

Console.WriteLine(z[0].Name);

Animal c;
c = z[1];
Console.WriteLine(c.Name);
}
}


好了,接下来,我们来自定义一个我们自己的表格:

 

1.先定义Cell单元格类

class Cell
{
public string Text { get; set; }
}


2.定义Row行 类(注意在这里我们必须就得用List<Cell>了。因为它包含很多Cell成员了,下边的Table也是,包含很多row)

 

 

class Row
{
private List<Cell> cells = new List<Cell>();
public Cell this[int index]
{
get { return cells[index]; }
set { cells.Add(value); }
}
}


3.再定义Table 表格类

 

   

    class Table
{
private List<Row> rows = new List<Row>();
public Row this[int index]
{
get { return rows[index]; }
set { rows.Add(value); }
}
}


4.最后我们在主程序里可以用了:

 

 

class Program
{
static void Main(string[] args)
{
Cell c0= new Cell();
c0.Text = "姓名";
Cell c1 = new Cell();
c1.Text = "性别";

Cell c2=new Cell();
c2.Text="张三";
Cell c3=new Cell();
c3.Text="男";

Row row = new Row();
row[0] = c0;
row[1] = c1;
Row row2 = new Row();
row2[0] = c2;
row2[1] = c3;

Table table = new Table();
table[0] = row;
table[1] = row2;
//取得表格第0行,第1列的单元格内容
//Console.WriteLine(table[0][1].Text);
//取得表格第1行,第0列的单元格内容
//Console.WriteLine(table[1][0].Text);

for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 2; j++)
{
Console.Write(table[i][j].Text+" ");
}
Console.WriteLine();
}


输出结果: