天天看點

溫故而知新:類索引器

溫故而知新:類索引器
溫故而知新:類索引器

類索引器

 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 { set; get; }

27         public string Name { set; get; }

28         public int Age { set; get; }

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 

繼續閱讀