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

  • 相关阅读:
    软件工程问题清单
    问题清单
    2020软件工程3作业
    2020软件工程作业02
    2020软件工程作业01
    2020软件工程个人作业06——软件工程实践总结作业
    2020软件工程作业03
    2020软件工程作业05
    软件工程作业 疑问总结
    2020软件工程作业04
  • 原文地址:https://www.cnblogs.com/mingtianct/p/6175719.html
Copyright © 2011-2022 走看看