• 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>实现。

  • 相关阅读:
    使用js方法时,调用的方法名明明一致,但就是不管用,解决
    最近ssh遇到异常及解决
    oracle中number数据类型简单明了解释
    Struts2 使用Jquery+ajax 文件上传
    PHP学习记录(二)
    PHP学习记录(一)
    Win7下Git SSH 创建Key
    webapck基础随手记
    分享一份JS前端面试题
    Redux零碎知识点回顾
  • 原文地址:https://www.cnblogs.com/mingtianct/p/6175719.html
Copyright © 2020-2023  润新知