• 温故而知新:类索引器


    类索引器
     1 using System;
     2 using System.Collections.Generic;
     3 
     4 namespace Prototype
     5 {
     6     class Program
     7     {
     8         static void Main(string[] args)
     9         {
    10             PersonContainer pc = new PersonContainer();
    11             pc[1= new Person() { No = 1, Age = 30, Name = "杨俊明" };
    12             pc[2= new Person() { No = 2, Age = 30, Name = "Mike" };
    13 
    14             Console.WriteLine(pc[1+ "\n" + pc[2+ "\n" + pc[3]);
    15 
    16             Console.WriteLine(pc["杨俊明"+ "\n" + pc["MIKE"+ "\n" + pc["NotExists"]);
    17 
    18             Console.Read();
    19 
    20         }        
    21     }  
    22 
    23 
    24     public class Person
    25     {
    26         public int No { setget; }
    27         public string Name { setget; }
    28         public int Age { setget; }
    29 
    30         public override string ToString()
    31         {
    32             return string.Format("No:{0},Name:{1},Age:{2}", No, Name, Age);
    33         }
    34     }
    35 
    36     public class PersonContainer
    37     {
    38         Dictionary<int, Person> dics = new Dictionary<int, Person>();
    39 
    40         /// <summary>
    41         /// 类索引器
    42         /// </summary>
    43         /// <param name="no"></param>
    44         /// <returns></returns>
    45         public Person this[int no]
    46         {
    47             get
    48             {
    49                 if (dics.ContainsKey(no))
    50                 {
    51                     return dics[no];
    52                 }
    53                 else
    54                 {
    55                     return null;
    56                 }
    57             }
    58             set
    59             {
    60                 if (!dics.ContainsKey(no))
    61                 {
    62                     dics.Add(no, value);
    63                 }
    64                 else
    65                 {
    66                     dics[no] = value;
    67                 }
    68             }
    69         }
    70 
    71         /// <summary>
    72         /// 类索引器重载
    73         /// </summary>
    74         /// <param name="name"></param>
    75         /// <returns></returns>
    76         public Person this[string name]
    77         {
    78             //只读
    79             get
    80             {
    81                 Person _person = null;
    82                 foreach (Person _p in dics.Values)
    83                 {
    84                     if (string.Compare(_p.Name, name, true== 0)
    85                     {
    86                         _person = _p;
    87                         break;
    88                     }
    89                 }
    90 
    91                 return _person;
    92             }
    93         }
    94     }
    95 }
    96 
    作者:菩提树下的杨过
    出处:http://yjmyzz.cnblogs.com
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    Map
    Enumeration输出
    iterator的基本用法
    Annotation整合工厂设计模式
    自定义Annotation
    Annotation
    动态代理设计模式
    静态代理设计模式
    自定义ClassLoader
    获取类的类对象的几种方式
  • 原文地址:https://www.cnblogs.com/yjmyzz/p/1657281.html
Copyright © 2020-2023  润新知