码迷,mamicode.com
首页 > Windows程序 > 详细

C#中的where从句

时间:2015-05-07 18:42:07      阅读:155      评论:0      收藏:0      [点我收藏+]

标签:

C#中的where从句

2011-07-03 13:07OrphousV 分类:C#/.NET | 浏览8443次
能解释一下下面两段代码中where的作用吗?
using System;
public class MyGenericClass <T> where T: IComparable, new()
{
// The following line is not possible without new() constraint:
T item = new T();
}

using System;
using System.Collections;

interface MyI
{
}

class Dictionary<TKey,TVal>
where TKey: IComparable, IEnumerable
where TVal: MyI
{
public void Add(TKey key, TVal val)
{
}
}

另外,这个特性具体有什么实际意义?怎么应用?希望举一个例子。
 
泛型类定义时的where子句表示的是泛型类型约束,也就是对泛型需要满足的条件的一个限制。
比如
where T: IComparable, new()
说明,这里的泛型T必须实现IComparable接口,并且必须有公有无参数构造函数。
因为泛型为中可能会用到一些与泛型相关的操作,但因为是泛型,所以不能保证使用时的泛型一定能进行这项操作,所以有这么个约束,保证在程序编译时能够检查出泛型是否满足要求。
例如,你写的MyGenericClass类中,对T进行了实例化:new T(),这就要求T一定要有公有无参数构造函数,如果没有where中的泛型类型约束,是不能保证这样实例化能够成功的。
更详细的说明,可以参考:

C#中的where从句

标签:

原文地址:http://www.cnblogs.com/chengjun/p/4485504.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!