A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

C#中索引器和属性类似,但也有一些区别:
a、    属性可以调用方法就如同他们是公共数据成员,而索引器可以调用对象上得方法,如同对象是一个数组。
b、    属性可以通过简单的名称访问, 而索引器需要通过索引器访问。
c、    属性可以为静态成员或者实例成员,而索引器必须是实例成员。
d、    属性的get访问器没有参数, 而索引器上的get访问器具有与索引器相同的形参表。
e、    属性的set访问器包含隐式value参数,而对于索引器,除了value参数外,索引器的set访问器还具有与索引器相同的形参表。
        索引器使得对象可按照与数组相似的方法进行索引,索引器可被重载,当访问二维数组时可以有多个形参;索引器不必根据整数值进行索引,由你决定如何定义特定的查找机制;要声明类或结构上的索引器,请使用this关键字。
  • using System;
  • using System.Collections.Generic;
  • using System.Text;
  • namespace Index
  • {
  • class sample<T> //这个类告诉我们如何使用客户端代码索引器
  • {
  • private T[] arr = new T[100];
  • public T this[int i] //索引器的签名由其形参的数量和类型组成。
  • {
  • get { return arr;}
  • set { arr = value;}
  • }
  • }
  • class IndexerClass
  • {
  • private int[] arr = new int[100]; //定义数组
  • public int this[int index] //索引器声明
  • {
  • get
  • {
  • if (index < 0 || index >100) return 0;
  • return arr[index];
  • }
  • set
  • {
  • if (!(index < 0 || index > 100)) arr[index] = value;
  • }
  • }
  • }
  • class String_index
  • {
  • string[] days = { "Sun", "Mon", "Tues", "Wed", "Thurs", "Fri", "Sat" };
  • private int GetDay(string testday)
  • {
  • int i = 0;
  • foreach(string day in days)
  • {
  • if (day == testday) return i;
  • i++;
  • }
  • return -1;
  • }
  • public int this[string day]
  • {
  • get{ return GetDay(day); }
  • }
  • }
  • class Program
  • {
  • static void Main(string[] args)
  • {
  • sample<string> string_value = new sample<string>();
  • string_value[0] = "Hello world";
  • System.Console.WriteLine(string_value[0]);
  • IndexerClass test = new IndexerClass();
  • //调用索引器初始化第2、4个数据
  • test[3] = 123;
  • test[5] = 1024;
  • for (int i = 0; i <= 10; i++ )
  • { System.Console.WriteLine("数据为#{0} = {1}", i, test);}
  • String_index week = new String_index();
  • System.Console.WriteLine("这是一周的第{0}天", week["Tues"]);
  • Console.ReadKey();
  • }
  • }
  • }

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

1 个回复

正序浏览
值得学习ing!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马