博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#中的where泛型约束【转】
阅读量:5839 次
发布时间:2019-06-18

本文共 1989 字,大约阅读时间需要 6 分钟。

这个关于的东西我看了几天了。一直没打看懂,我的领悟能力有点差,刚才突然明白了一点,的意思就是说:

类的泛型,只能是字句后面所写的接口或类。

这么说好像也有点不大明白,举个例子。

我有一个接口,如下:

1 ///  2 /// 国籍的接口  3 ///  4 public interface INationality  5 {
6 string Nationality 7 {
8 set; 9 get; 10 } 11 string GetNationality(); 12 }

然后该接口有两个实现,如下:

1 ///  2 /// 中国人  3 ///  4 public class Chinese : INationality  5 {
6 private string _Nationality; 7 public string Nationality 8 {
9 set 10 {
11 _Nationality = value; 12 } 13 } 14 15 public string GetNationality() 16 {
17 return string.IsNullOrEmpty(_Nationality) ? "Default." : _Nationality; 18 } 19 } 20 21 /// 22 /// 美国人 23 /// 24 public class American : INationality 25 {
26 private string _Nationality; 27 public string Nationality 28 {
29 set { _Nationality = value; } 30 } 31 32 public string GetNationality() 33 {
34 return string.IsNullOrEmpty(_Nationality) ? "Default." : _Nationality; 35 } 36 }

然后创建一个泛型类,带有泛型约束的类,如下:

1 ///  2 ///  3 ///  4 ///
5 public class PrintNationality
where T : INationality, new() 6 {
7 T item = new T(); 8 public void Print() 9 {
10 Console.WriteLine(string.Format("Nationality:{0}", item.GetNationality())); 11 } 12 }

由于有字句的泛型约束,所以,创建PrintNationality<T>的对象时,T的类型只能是继承子INationality接口的类。

1 public class Program  2 {
3 static void Main(string[] args) 4 {
5 PrintNationality
_c = new PrintNationality
(); 6 PrintNationality
_a = new PrintNationality
(); 7 //PrintNationality
_o = new PrintNationality(); 此句是错误的,因为泛型类型必须是继承自INationality接口的类 8 _c.Print(); 9 _a.Print(); 10 Console.ReadKey(); 11 } 12 }

以上的代码运行结果:

Nationality:Chinese.Nationality:American.

 

 

转载于:https://www.cnblogs.com/xsmhero/archive/2011/12/01/2270772.html

你可能感兴趣的文章
冲刺第九天 1.10 THU
查看>>
传值方式:ajax技术和普通传值方式
查看>>
Linux-网络连接-(VMware与CentOS)
查看>>
寻找链表相交节点
查看>>
linq 学习笔记之 Linq基本子句
查看>>
[Js]布局转换
查看>>
Hot Bath
查看>>
Java annotation 自定义注释@interface的用法
查看>>
Apache Spark 章节1
查看>>
Linux crontab定时执行任务
查看>>
mysql root密码重置
查看>>
33蛇形填数
查看>>
选择排序
查看>>
SQL Server 数据库的数据和日志空间信息
查看>>
前端基础之JavaScript
查看>>
自己动手做个智能小车(6)
查看>>
自己遇到的,曾未知道的知识点
查看>>
P1382 楼房 set用法小结
查看>>
分类器性能度量
查看>>
docker 基础
查看>>