码迷,mamicode.com
首页 > Windows程序 > 详细

c#索引器

时间:2017-09-09 14:31:11      阅读:192      评论:0      收藏:0      [点我收藏+]

标签:理解   logs   nbsp   tom   return   c#语言   成员   family   ons   

1.索引器:C#语言中的类成员,使得对象可以像数组一样被引用,使程序看起来更直观,更容易被编写。

一个简单的案例:

 1   class TestIdx
 2     {
 3         public string this[int i]
 4         {
 5             get {
 6                 return names[i];
 7             }
 8             set {
 9                 names[i] = value;
10             }
11         }
12         private string[] names= {"lily","lucy","tom" }; //私有字段names
13     }

 

1  static void Main(string[] args)
2         {
3             TestIdx tidx = new TestIdx();
4             string str_name = tidx[0]; //调用get方法,取值
5             tidx[1] = "sam";           //给索引器赋值,其实就是调用set方法
6             Console.ReadKey();
7         }
TestIdx 这个类的实例显然不能直接操作private字段names,可以在类中定义一个索引器,来达到操作names的目的

2.索引器语法:

从以上这个最简单的案例总结一下索引器的语法: [权限修饰符] 返回值类型 this[参数类型 参数名]

                      {

                         get 方法 

                       set方法

                      }

ps:可能我理解的不够深,处于封装的考虑,保护成员变量,存储集合类对象设置为私有,然后设置访问他们的方法,那么把访问他们的方法也设为私有,我理解不了,pativate类型的索引器有什么作用,在我看来就是闲的蛋疼。

3.索引器与属性同为c#的语法糖,这里做一下比较:

         属性用名称来标识,名称随便取,索引器用this关键字来标记;

         索引器有参数列表,和一般的方法不同之处在于写在了[]中...,所以索引器可以重载,属性当然不可以了;

         属性可以用static修饰,索引器不行,索引器只能通过实例来操作。

         需要特别注意的是不光只能通过数字索引,还可以是字符串等类型:

   字符串索引案例:

   class TestIdx2 {
        public Dictionary<string, string> dic = new Dictionary<string, string>() { {"a1","aaa"},
            {"b1","bbb" }, {"c1","ccc" } };
        
        public string this[string str]
        {
            get {
                return dic[str];
            }
            set {
                dic[str] = value;
            }
        }
    }
  static void Main(string[] args)
        {
            TestIdx2 idx2 = new TestIdx2();
            string stmp = idx2["a1"];  //get方法,取值
            idx2["b1"] = "ccccc";  //set方法,赋值
            Console.ReadKey();
        }

 

         

 

 

c#索引器

标签:理解   logs   nbsp   tom   return   c#语言   成员   family   ons   

原文地址:http://www.cnblogs.com/caojiannan/p/7498043.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!