zoukankan      html  css  js  c++  java
  • 索引器的重载

     1            Company com = new Company();
     2            com.Departments.Add("HR");
     3            com.Departments.Add("Market");
     4            com.Departments.Add("Development");
     5
     6            com.Departments[0].Staffs.Add("Alice");
     7            com.Departments[0].Staffs.Add("Amy");
     8            com.Departments[0].Staffs.Add("Ellen");
     9            com.Departments[2].Staffs.Add("Albert");
    10            com.Departments[2].Staffs.Add("Mark");
    11            com.Departments[2].Staffs.Add("Kevin");
    12            com.Departments[2].Staffs.Add("Neil");
    13
    14            System.Console.WriteLine(com.Departments[0].Staffs[1].Name);
    在循环处理的时候,第14行自然没有什么不好的地方,但如果像14行那样,要直接访问某个部门,用int的索引似乎显得太突兀。

    我们优化DepartmentCollection的this索引器,重载this
     1        public Department this[int index]
     2        {
     3            set
     4            {
     5                this.List[index] = value;
     6            }

     7            get
     8            {
     9                return (Department)this.List[index];
    10            }

    11        }

    12
    13        public Department this[string name]
    14        {
    15            get
    16            {
    17                for (int i = 0; i <= this.List.Count - 1; i++)
    18                {
    19                    if (((Department)this.List[i]).Name == name)
    20                    {
    21                        return this[i];
    22                    }

    23                }

    24                return null;
    25            }

    26
    27        }

    然后,我们继续优化Department
     1public class Department
     2    {
     3        public StaffCollection Staffs = new StaffCollection();
     4
     5        public Department(string name)
     6        {
     7            Name = name;
     8        }

     9        public readonly string Name;
    10
    11        public Staff this[int index]
    12        {
    13            set
    14            {
    15                Staffs[index] = value;
    16            }

    17            get
    18            {
    19                return Staffs[index];
    20            }

    21        }

    22    }
    加了第11行的this。

    现在的调用代码是
     1            Company com = new Company();
     2            com.Departments.Add("HR");
     3            com.Departments.Add("Market");
     4            com.Departments.Add("Development");
     5
     6            com.Departments[0].Staffs.Add("Alice");
     7            com.Departments[0].Staffs.Add("Amy");
     8            com.Departments[0].Staffs.Add("Ellen");
     9            com.Departments[2].Staffs.Add("Albert");
    10            com.Departments[2].Staffs.Add("Mark");
    11            com.Departments[2].Staffs.Add("Kevin");
    12            com.Departments[2].Staffs.Add("Neil");
    13
    14            System.Console.WriteLine(com.Departments["Development"][1].Name);

    注意第14行,是不是优雅多了啊?
  • 相关阅读:
    使用 requests 维持会话
    使用 requests 发送 POST 请求
    使用 requests 发送 GET 请求
    requests 安装
    使用 urllib 分析 Robots 协议
    使用 urllib 解析 URL 链接
    使用 urllib 处理 HTTP 异常
    使用 urllib 处理 Cookies 信息
    使用 urllib 设置代理服务
    按单生产程序发布
  • 原文地址:https://www.cnblogs.com/shyleoking/p/648808.html
Copyright © 2011-2022 走看看