






















类型参数的约束
在定义泛型类时,可以对客户端代码能够在实例化类时用于类型参数的类型种类施加限制。如果客户端代码尝试使用某个约束所不允许的类型来实例化类,则会产生编译时错误。这些限制称为约束。约束是使用 where 上下文关键字指定的。下表列出了六种类型的约束:
下面来用实例说明一下:
<基类名>;new();
先来定义一个类

public class Article
{
private string m_title;
private DateTime m_createdate;
public Article()
{
}
public Article(string title)
{
this.m_title = title;
}
public string Title
{
get
{
return this.m_title;
}
set
{
this.m_title = value;
}
}
public DateTime CreateDate
{
get
{
return this.m_createdate;
}
set
{
this.m_createdate = value;
}
}
}
接下来就是泛型约束的实现
//指定类型参数的类型约束,这里的参数只能是Article类,并且这个类要提供一个无参数的构造函数。
public class GenericWhere<T> where T :Article, new()
{
private T m_genwhere;
//声明一个类型参数的属性
public T GenWhere
{
get
{
return this.m_genwhere;
}
set
{
this.m_genwhere = value;
}
}
public GenericWhere(T genW)
{
this.m_genwhere = genW;
}
}
public class GenericWhereApply
{
public void GencWhereMethod()
{
Article art = new Article();
GenericWhere<Article> gw = new GenericWhere<Article>(art);
//这样就可以通赤gw的GenWhere属性访问Article的所有成员。
string str = gw.GenWhere.Title;
}
}

其它几种类型的约束大概的用法都差不多,它们的类型参数都需要是受约束的类型。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。