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();
}

输出结果:

C#索引器的应用:自已写一个表格的更多相关文章

  1. JavaScript写一个表格排序类

    依稀记得那是上个星期六的下午,我参加了网易暑期实习生招聘笔试.考得相当糟糕,编程题3个题通过了2个,简答题没做对,选择题貌似是20个题猜了6-7个,99%是挂了,唉唉唉!生活不只眼前的苟且,学习的脚步 ...

  2. javascript入门 之 用bootstrap-table写一个表格

    方法1(对普通的 table 设置 data-toggle="table" 即可): <!DOCTYPE html> <html> <head> ...

  3. c#索引器的简单用法

    abstract class Bird { protected string name; public abstract string Name { get; set; } public abstra ...

  4. C#中的索引器(Indexers)

    前两天刚刚学习完了属性,这两天又搂完了索引器,发现两者非常的相似,但是相似之外还有一些不同之处.今天就来总结一下索引器--Indexers 索引器的作用及格式 索引器的作用就是能够使类或者结构体的实例 ...

  5. Java Web 开发利用Struts2+Spring+mybatis写一个用户登录界面以及简单的数据交互

    框架的东西太复杂也难以讲通,直接上代码: 一.首先得配置环境 和导入必要的jar包 有一些重要的如下: Filter文件夹下的SafetyFilter.java   model文件夹下的 Global ...

  6. C#中索引器Indexer的学习使用

    索引器 顾名思义,是用来索引的,那么C#中索引器是用来索引什么的呢 首先我们知道,C#中的数组是本身就可以索引的,那么C#中的类和结构呢,类和结构的实例是无法索引的,如果我们想让C#中类或者结构的实例 ...

  7. 接口、索引器、Foreach的本质(学习笔记)

    接口 什么是接口? 接口代表一种能力,和抽象类类似但比抽象类的抽象程度更高! 接口的定义: public interface IEat//定义一个接口 { void Eat(string food); ...

  8. (转)如何基于FFMPEG和SDL写一个少于1000行代码的视频播放器

    原文地址:http://www.dranger.com/ffmpeg/ FFMPEG是一个很好的库,可以用来创建视频应用或者生成特定的工具.FFMPEG几乎为你把所有的繁重工作都做了,比如解码.编码. ...

  9. Arava: 用 swing 写一个取色器

    备哥以前发我了一个小工具,TakeColor 取色器.来复刻一个吧. 分析一下:顶部是菜单,左侧框显示当前鼠标所在的颜色(下面显示当前坐标和颜色值,默认RGB),中间框显示鼠标周围区域,右侧显示取色的 ...

随机推荐

  1. Effective C++_笔记_条款01_视C++为一个语言联邦

    (整理自Effctive C++,转载请注明.整理者:华科小涛@http://www.cnblogs.com/hust-ghtao/) C++的各种能力和特性使它成为一个无可匹敌的工具,但也可能引发某 ...

  2. ALV 数值列负号前置 (EDIT_MASK应用)

    1.建立自定义函数 浮点数显示FUNCTION conversion_exit_zsign_output.*"---------------------------------------- ...

  3. TestNg JAVA 自动化单元测试框架Demo

    TestNg TestNg 是java的一个自动化单元测试框架 参考:http://testng.org/doc/index.html 环境准备 既然是java 的自动化单元测试框架,就必须要有jav ...

  4. Codeforces Round #197 (Div. 2) D. Xenia and Bit Operations

    D. Xenia and Bit Operations time limit per test 2 seconds memory limit per test 256 megabytes input ...

  5. WTL介绍

    WTL简单介绍 关键词: WTL WTL是一个好东东.它开发的程序都很短小精悍.对开发WIN32的应用有很好的优点.它不用MFC开发.但可以高速产生窗体和控件. 以文本方式查看主题 -  温馨小筑   ...

  6. http2.0笔记

    二进制分帧层 定义了如何封装 HTTP 消息并在客户端与服务器之间传输 http2.0的消息传输特点: 流 已建立的连接上的双向字节流 消息 与逻辑消息对应的完整的一系列数据帧 帧 http2.0通信 ...

  7. Android菜鸟的成长笔记(12)——Handler、Loop、MessageQueue

    原文:[置顶] Android菜鸟的成长笔记(12)——Handler.Loop.MessageQueue 当一个程序第一次启动时,Android会启动一条主线程(Main Thread),主线程主要 ...

  8. INFORMIX 时间函数大全

    http://publib.boulder.ibm.com/infocenter/idshelp/v115/index.jsp?topic=/com.ibm.sqls.doc/ids_sqs_0187 ...

  9. 复制文件时,如何显示进度条(使用BlockRead函数读取数据,并插入application.ProcessMessages)

    procedure mycopyfile(sourcef,targetf:string;i:integer); var FromF,ToF:file; NumRead,NumWritten:Integ ...

  10. Java模拟POST表单提交HttpClient操作

    public static void Login() { String url = "http://www.***.com/login"; PostMethod postMetho ...