索引器

原创 2016年08月28日 16:53:04

示例代码:
Employee.cs

using System;
class Employee
    {
        private string name;
        private int age;
        private int id;

        public string Name
        {
            get { return this.name; }
            set { this.name = value; }
        }

        public int Age
        {
            get { return this.age; }
            set { this.age = value; }
        }

        public int ID
        {
            get { return this.id; }
        }

        public Employee(int id)
        {
            this.id = id;
        }

        public override string ToString()
        {
            return this.Name + ", " + this.Age + ", " + this.id;
        }
    }

Manager.cs

using System;
using System.Collections.Generic;
class Manager
    {
        private Dictionary<int, Employee> employees;

        public Manager()
        {
            this.employees = new Dictionary<int, Employee>();

            // initialize employees
            Employee employee1 = new Employee(1001)
            {
                Name = "Owen",
                Age = 22
            };
            Employee employee2 = new Employee(1002)
            {
                Name = "Vincent",
                Age = 21
            };
            Employee employee3 = new Employee(1003)
            {
                Name = "Ricy",
                Age = 20
            };

            // add employees to the dictionary
            this.employees.Add(employee1.ID, employee1);
            this.employees.Add(employee2.ID, employee2);
            this.employees.Add(employee3.ID, employee3);
        }

        public Employee this[int id]
        {
            get
            {
                Employee employee = null;
                this.employees.TryGetValue(id, out employee);
                return employee;
            }

            set
            {
                if (value != null)
                    this.employees[id] = value;
            }
        }

        public Employee this[string name]
        {
            get
            {
                var ems = this.employees.Values;
                foreach(var em in ems)
                {
                    if (em.Name.Equals(name))
                        return em;
                }
                return null;
            }
        }
    }

Program.cs

using System;
class Program
    {
        public static void Main()
        {
            Manager manager = new Manager();

            Console.WriteLine(manager[1001]);
            Console.WriteLine(manager["Ricy"]);

            Console.ReadLine();
        }
    }

运行结果:
运行结果

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

给类添加索引器

  • 2012年06月20日 23:09
  • 17KB
  • 下载

C# 类索引器源码

  • 2010年01月19日 16:16
  • 38KB
  • 下载

C#语法小知识(六)属性与索引器

属性是一种成员,它提供灵活的机制来读取、写入或计算私有字段的值。 属性可用作公共数据成员,但它们实际上是称为“访问器”的特殊方法。 这使得可以轻松访问数据,还有助于提高方法的安全性和灵活性。 索引...

C#中方法,属性与索引器

C#中方法,属性与索引器: TODO: 1,关于系统中经常出现的通过某一字段,查询对应实体信息(可能是一条字段或一条数据和一组泛型集合) 讲解篇:1,方法,2,属性3,索引器 1,方法(1...

C#在类中使用索引器Demo

  • 2008年07月28日 20:39
  • 44KB
  • 下载

c# 索引器

  • 2008年02月27日 13:41
  • 4KB
  • 下载

黑马程序员-C#索引器

------- Windows Phone 7手机开发、.Net培训、期待与您交流! -------         索引器允许类或结构的实例就像数组一样进行索引。 索引器类似于属性,不同之处在于它...
  • zou_lin
  • zou_lin
  • 2014年03月16日 12:39
  • 341

C#索引器的讲解(2)

  • 2007年12月18日 16:57
  • 8.8MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:索引器
举报原因:
原因补充:

(最多只允许输入30个字)