zoukankan      html  css  js  c++  java
  • c# 索引器方法

    索引器方法允许我们构建能够以类似访问数组的语法来访问内部子类型的自定义类型

    在语法上索引器方法和属性的定义很类似,一样是使用get,set,不同的是索引器是使用this[]创建的。

    一个简单的索引器代码:

        /// <summary>
        /// 汽车类容器
        /// </summary>
        public class CarList
        {
            private ArrayList al = new ArrayList();
    
            /// <summary>
            /// 索引器
            /// </summary>
            /// <param name="index"></param>
            /// <returns></returns>
            public Car this[int index]
            {
                get { return (Car)al[index]; }
                set { al.Insert(index, value); }
            }
        }
    
        /// <summary>
        /// 汽车类
        /// </summary>
        public class Car
        {
            public string Name { get; set; }
        }
    
        static void Main(string[] args)
        {
             CarList list = new CarList
             {
                 [0] = new Car() { Name = "Car1" },
                 [1] = new Car() { Name = "Car2" }
             };
             Console.WriteLine(list[0].Name);
        }

    使用字符串值索引对象

    /// <summary>
        /// 汽车类容器
        /// </summary>
        public class CarList
        {
            private Dictionary<string,object> al = new Dictionary<string, object>();
    
            /// <summary>
            /// 索引器,这里使用字符串索引
            /// </summary>
            /// <param name="index"></param>
            /// <returns></returns>
            public Car this[string index]
            {
                get { return (Car)al[index]; }
                set { al[index] = value; }
            }
        }
    
        /// <summary>
        /// 汽车类
        /// </summary>
        public class Car
        {
            public string Name { get; set; }
        }
    
        static void Main(string[] args)
        {
              
             CarList list = new CarList
             {
                 ["car1"] = new Car() { Name = "Car1" },
                 ["car2"] = new Car() { Name = "Car2" }
             };
             Console.WriteLine(list["car1"].Name);
         }

    可以看出索引器是可以重载的;

    虽然在构建自定义集合时,索引器方法很常见,但是记住在泛型类型中(如:List<T>)已经实现索引器,在例子(只是例子)中完全可以使用List<Car>实现。

  • 相关阅读:
    微信支付开发(12) 认清微信支付v2和v3
    教爸爸妈妈用微信
    微信公众平台开发(103) 四六级成绩查询
    微信支付开发(11) Native支付
    微信公众平台开放设备接入能力
    微信公众平台开发(102) 模板消息
    微信支付开发(10) 全网发布
    微信小店开发(3) 自定义菜单加入维权
    openssl下载
    使用PHP QR Code生成二维码
  • 原文地址:https://www.cnblogs.com/mingtianct/p/6175719.html
Copyright © 2011-2022 走看看