关于C#2.0泛型应用的一个小例子

泛型是C#2.0提供的新特性,关于泛型,我认为不必关心其内部实现,只要知道其好处并且会用就可以了。网上有很多分析泛型的文章,我这里提供一个泛型使用的小例子。
当我们使用WinForm的下拉框控件ComboBox的时候,往往希望其Item在显示一个值的同时,背后再挂一个对象,这样方便我们进行业务操作,但是ComboBox不允许直接在其Item上挂对象,所以可以写如下一个泛型类。
 1    /// <summary>
 2    /// 泛型类。用于构造ComboBoxItem控件的Item对象。
 3    /// 该类可以被所有项目共用。
 4    /// </summary>
 5    /// <typeparam name="T"></typeparam>

 6    public class ComboBoxItem<T>
 7    {
 8        string ItemText 显示的文字
16        T ItemValue 实际的值
24        构造方法
31        自定义方法
70    }

71
一个ComboBoxItem对象实例代表下拉框的一个选项,其中ItemText是要显示的文字,为string类型,ItemValue是背后挂的对象,为T类型,即使用时可以根据实际需要确定到底是什么具体类型。为了便于进行示例 ,简单构建Student对象如下。
 1    /// <summary>
 2    /// 学生对象。只有姓名和年龄两个属性
 3    /// </summary>

 4    public class Student
 5    {
 6        string Name 姓名
13        int Age 年龄
20        构造方法
27    }

28
我们来实现这样一种场景,将一些学生对象绑定到下拉框上,显示的是学生的名字,当选中这个学生时,用对话框弹出学生的年龄。首先假定窗体上有一个下拉框控件conboBox1,我们将学生信息绑定到comboBox1上。
 1            //构建数据源,这时T为Student
 2            List<ComboBoxItem<Student>> list = new List<ComboBoxItem<Student>>();
 3            list.Add(new ComboBoxItem<Student>(""null));
 4            Student s1 = new Student("张三"15);
 5            Student s2 = new Student("李四"16);
 6            list.Add(new ComboBoxItem<Student>(s1.Name, s1));
 7            list.Add(new ComboBoxItem<Student>(s2.Name, s2));
 8            //绑定到下拉框
 9            comboBox1.DataSource = list;
10            comboBox1.DisplayMember = "ItemText";//显示的文字
11            comboBox1.ValueMember = "ItemValue";//背后的对象
12
以上代码还用到了泛型的嵌套。
然后在comboBox1的SelectedIndexChanged事件中,获取Student对象,弹出其年龄。
1            if (comboBox1.SelectedIndex > 0)
2            {
3                Student s = (Student)comboBox1.SelectedValue;//获取Student对象
4                MessageBox.Show(s.Age.ToString());
5            }

6
依此类推,在实际使用时每个人都可以根据需要绑定各种类型的对象,以实现代码的复用和类型安全。

注:后来发现这篇文章有个地方存在错误,详见对象判等和重载==操作符 

posted on 2008-02-15 16:14 阿多斯 阅读(6486) 评论(27) 编辑 收藏

评论

#1楼 2008-02-15 16:49 个广告[未注册用户]

这么简单的东西还要
写例子
还要发表在首页
 回复 引用   

#2楼 2008-02-15 17:48 beyoung      

佩服博主呵~
偶至今没勇气敢在首页发东东.
 回复 引用 查看   

#3楼[楼主] 2008-02-15 17:57 阿多斯      

来了俩说相声的。。。
没办法,俺水平就这么低
 回复 引用 查看   

#4楼 2008-02-15 18:06 知识海洋的一颗水珠[未注册用户]

东西简单但是实用,顶顶  回复 引用   

#5楼 2008-02-15 18:58 Anders Liu      

汗……发首页怎么了?只要能对一些人有所帮助,那就是值得的。  回复 引用 查看   

#6楼 2008-02-15 21:04 一天[未注册用户]

一二楼的RZH,笑话人不如人。
学识可以不如人,人品最好不要。
 回复 引用   

#7楼 2008-02-15 22:57 海洋      

支持博主写东西  回复 引用 查看   

#8楼 2008-02-16 11:59 KevinLi      

又帮助,正在学习泛型  回复 引用 查看   

#9楼 2008-02-20 12:37 佳文      

支持博主。  回复 引用 查看   

#10楼 2008-03-20 22:08 Tony大[未注册用户]

支持博主,简单易学。
建议一二楼的写点深奥的自己意淫,反正也没什么人看得懂。
 回复 引用   

#11楼 2008-05-27 10:42 天启      

不错,明白了一些,网上很多教程都将的是原理,偶是菜鸟,暂不关心泛型的内幕.  回复 引用 查看   

#12楼 2008-05-29 22:36 匆匆而过[未注册用户]

这样写数据查询每次都要枚举,是不是缺乏效率。  回复 引用   

#13楼 2008-06-11 17:03 qingyun[未注册用户]

鄙视2楼  回复 引用   

#14楼 2008-09-18 13:34 游乐儿[未注册用户]

正在学习当中 ,从最基本的开始,我喜欢 谢谢啦  回复 引用   

#15楼 2008-09-21 11:12 StephenZ[未注册用户]

鄙视一、二楼,不管内容多简单,至少是人家自己的东西。

支持楼主!
 回复 引用   

#16楼 2008-10-18 23:14 小巧玲珑[未注册用户]

BS一楼二楼.
强烈BS一楼二楼.
再次深深的BS一楼二楼.
最后一次又深又强的BS一楼二楼.
感谢楼主.UP.!
 回复 引用   

#17楼 2008-11-05 23:15 学海无涯,追求卓越[未注册用户]

我觉得写得很好,谢谢。项目里一直用,可今天才明白,泛型真正的好处。  回复 引用   

#18楼 2009-02-12 16:14 cloudyy      

支持楼主  回复 引用 查看   

#19楼 2009-07-23 17:05 suxin[未注册用户]

楼主这个例子好啊  回复 引用   

#20楼 2009-07-30 10:48 aryang[未注册用户]

存在错误你改正过来没有  回复 引用   

#21楼 2009-10-13 15:43 箬[未注册用户]

@个广告
真是找骂
 回复 引用   

#22楼 2009-10-26 14:21 爱比你武      

1楼2楼 就是神经病,
你们强,你们强怎么跟我一样来博客园
 回复 引用 查看   

#23楼 2009-10-29 16:52 henllyhuang[未注册用户]

强烈支持!  回复 引用   

#24楼 2009-10-30 09:22 LakeLee[未注册用户]

1楼,2楼的,你们简直就是DB。
谁不是从不会到会的。你们(1楼,2楼的)有什么瞧不起人的,真是一对狗眼。
支持楼主。。。
Day Day Up!
 回复 引用   

#25楼 2009-10-30 09:22 LakeLee[未注册用户]

1楼,2楼的,你们简直就是DB。
谁不是从不会到会的。你们(1楼,2楼的)有什么瞧不起人的,真是一对狗眼。
支持楼主。。。
Day Day Up!
 回复 引用   

#26楼 2009-12-08 11:52 Darak      

蛮好的例子  回复 引用 查看   

#27楼 2011-10-14 17:28 xu_happy_you      

我写博客也是,也有人说什么放首页,真实瞧不起人,鄙视1楼2楼,顶博主!  回复 引用 查看   

导航

公告

 念念之中,不思前境。
 若前念、今念、后念,
 念念相续不断,名为系缚。
 于诸法上,念念不住,
 即无缚也。
          ——坛经·定慧品

 
 
  Locations of visitors to this page
昵称:阿多斯
园龄:5年1个月
粉丝:6
关注:0
<2008年2月>
272829303112
3456789
10111213141516
17181920212223
2425262728291
2345678

统计

搜索

 
 

常用链接

随笔分类

随笔档案

My Friends' Blog

积分与排名

最新评论

阅读排行榜

评论排行榜

推荐排行榜