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    责编:豆豆技术应用

正在加载评论...