C#索引器的应用:自已写一个表格

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

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

用法:

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

 

[csharp][/csharp] view plaincopy

  1. public class Animal
  2.     {
  3.         public string Name { get; set; }
  4.     }

 

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

 

[csharp][/csharp] view plaincopy

  1. public class Zoo
  2.     {
  3.         private List<Animal> animals = new List<Animal>();
  4.         public Animal this[int index]
  5.         {
  6.             get{return animals[index];}
  7.             set{animals.Add(value);}
  8.         }
  9.     }

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

 

 

[csharp][/csharp] view plaincopy

  1. class Program
  2.     {
  3.         static void Main(string[] args)
  4.         {
  5.             Animal a = new Animal();
  6.             a.Name = “老虎”;
  7.             Animal b = new Animal();
  8.             b.Name = “大象”;
  9.             Zoo z=new Zoo();
  10.             z[0] = a;
  11.             z[1] = b;
  12.             Console.WriteLine(z[0].Name);
  13.             Animal c;
  14.             c = z[1];
  15.             Console.WriteLine(c.Name);
  16.         }
  17.     }

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

 

1.先定义Cell单元格类

[csharp][/csharp] view plaincopy

  1. class Cell
  2.     {
  3.         public string Text { get; set; }
  4.     }

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

 

 

[csharp][/csharp] view plaincopy

  1. class Row
  2.     {
  3.         private List<Cell> cells = new List<Cell>();
  4.         public Cell this[int index]
  5.         {
  6.             get { return cells[index]; }
  7.             set { cells.Add(value); }
  8.         }
  9.     }

3.再定义Table 表格类

 

[csharp][/csharp] view plaincopy

  1. class Table
  2. {
  3.     private List<Row> rows = new List<Row>();
  4.     public Row this[int index]
  5.     {
  6.         get { return rows[index]; }
  7.         set { rows.Add(value); }
  8.     }
  9. }

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

 

 

[csharp][/csharp] view plaincopy

  1. class Program
  2.     {
  3.         static void Main(string[] args)
  4.         {
  5.             Cell c0= new Cell();
  6.             c0.Text = “姓名”;
  7.             Cell c1 = new Cell();
  8.             c1.Text = “性别”;
  9.             Cell c2=new Cell();
  10.             c2.Text=”张三”;
  11.             Cell c3=new Cell();
  12.             c3.Text=”男”;
  13.             Row row = new Row();
  14.             row[0] = c0;
  15.             row[1] = c1;
  16.             Row row2 = new Row();
  17.             row2[0] = c2;
  18.             row2[1] = c3;
  19.             Table table = new Table();
  20.             table[0] = row;
  21.             table[1] = row2;
  22.             //取得表格第0行,第1列的单元格内容
  23.             //Console.WriteLine(table[0][1].Text);
  24.             //取得表格第1行,第0列的单元格内容
  25.             //Console.WriteLine(table[1][0].Text);
  26.             for (int i = 0; i < 2; i++)
  27.             {
  28.                 for (int j = 0; j < 2; j++)
  29.                 {
  30.                     Console.Write(table[i][j].Text+” “);
  31.                 }
  32.                 Console.WriteLine();
  33.             }

标签