C#编程语言的未来功能
http://tech.ddvip.com 2007年10月05日 社区交流
内容摘要:Microsoft Corporation 正在开发 C# 语言的下一个主要版本。本文介绍了四种主要的新功能,即泛型、迭代程序、匿名方法和局部类型。
然而,如果立即实例化 Dictionary 类而且提供的类型参数没有实现 IComparable 接口,则程序将遇到运行时错误,尤其是 InvalidCastException 异常。
声明约束
在 C# 中,程序可以为泛型类中声明的每个类型参数提供可选约束列表。约束表示要将一个类型构造成泛型所必须满足的要求。可以使用 where 关键字声明约束,该关键字后跟“参数-要求”对,其中“参数”必须是泛型中定义的某个参数,“要求”必须是类或接口。
为了满足在 Dictionary 类中使用 CompareTo 方法的需要,程序可以对 KeyType 类型参数添加约束,要求传递给 Dictionary 类作为第一个参数的任何类型都必须实现 IComparable 接口,例如:
public class Dictionary<KeyType, ValType> where KeyType : IComparable
{
public void Add(KeyType key, ValType val)
{
...
switch(key.CompareTo(x))
{
}
...
}
}
这样,编译代码时就会检查代码,以确保程序每次使用 Dictionary 类时,作为第一个参数传递的类型都实现了 IComparable 接口。此外,程序在调用 CompareTo 方法之前,再也无需将变量显式转换为 IComparable 接口了。
多重约束
对于任何给定的类型参数,程序可以为其指定任意多个接口约束,但最多只能指定一个类约束。每个新约束都以另一个“参数-要求”对的形式进行声明,并且给定的泛型的每个约束都用逗号分隔。以下示例中的 Dictionary 类包含两种参数,KeyType 和 ValType。KeyType 类型参数有两个接口约束,而 ValType 类型参数有一个类约束:
作者:Prashant Sridharan 责编:豆豆技术应用