温故而知新:类索引器

类索引器

 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 

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏AhDung

【手记】走近科学之为什么明明实现了IEnumerable<T>的类型却不能调用LINQ扩展方法

比如Json.NET的JObject明明实现了IEnumerable<T>,具体来说是IEnumerable<KeyValuePair<string, JTok...

1081
来自专栏Jackson0714

01.策略模式-上篇

3458
来自专栏跟着阿笨一起玩NET

C#中格式化数据的输出

alignment:可选,是一个带符号的整数,指示首选的格式化字段宽度。如果“对齐”值小于格式化字符串的长度,“对齐”会被忽略,并且使用格式化字符串的长度作为字...

720
来自专栏我是攻城师

Joda-Time几个用法小记

3017
来自专栏Kotlin入门系列

C#控制台基础 将十六进制的字符串 转换成 十进制数

4165
来自专栏cs

c sharp 的输入,输入,switch语句。

3025
来自专栏技术之路

动态生成TreeView方法(二)

这次是用递归的方法实现 ,我想大家都知道怎么做吧,就不 多说了, 还是不建议用递归,数据量大了会映响速度,动态生成TreeView方法(一)是我比较喜欢的方法 ...

24910
来自专栏王磊的博客

HttpWebRequest采集读取网站挂载Cookie的通用方法

Asp.net 版本 HttpWebRequest采集时添加:httpWebRequest.CookieContainer = new CookieContai...

2915
来自专栏技术之路

动态生成TreeView方法(一)

一般情况下生成TreeView我们用的是用递归不建议用递归数据量大了会慢, 小弟今天用SortedList集合实现一下没有技术含量,一看代码大家就会明白。个人也...

1856
来自专栏跟着阿笨一起玩NET

C#中汉字排序简单示例(拼音/笔划)

2271

扫码关注云+社区