C#编程语言的未来功能
http://tech.ddvip.com 2007年10月05日 社区交流
内容摘要:Microsoft Corporation 正在开发 C# 语言的下一个主要版本。本文介绍了四种主要的新功能,即泛型、迭代程序、匿名方法和局部类型。
使用泛型,程序员只需编写、测试和部署一次代码,即可对各种不同的数据类型重复使用该代码。第一个 Stack 示例具备此功能,第二个 Stack 示例允许程序重复使用对其应用程序性能影响不大的代码。对于值类型,第一个 Stack 示例具有较大的性能问题,而第二个 Stack 示例完全消除了这种问题,因为它去除了装箱和向下的类型转换。
而且,编译时还会对泛型进行检查。当程序使用提供的类型参数实例化泛型类时,此类型参数只能是程序在类定义中指定的类型。例如,如果程序创建了一个 Customer 对象类型的 Stack,就无法将整数压入堆栈。通过强制执行这种操作,可以生成更可靠的代码。
此外,与其他严格的类型实现相比,泛型的 C# 实现降低了代码的膨胀速度。使用泛型创建具有类型的集合,可以在保持操作性能优势的同时避免创建每个类的特定变体。例如,程序可以创建一个参数化的 Stack 类,而无需创建用于存储整数的 IntegerStack、用于存储字符串的 StringStack 以及用于存储 Customer 类型的 CustomerStack。
这样可以增加代码的可读性。只需创建一个 Stack 类,程序就可以将与某个堆栈相关联的所有操作封装在一个使用方便的类中。然后,在创建 Customer 类型的 Stack 时,尽管其中存储了 Customer 类型,但显而易见,程序使用的仍然是堆栈数据结构。
多个类型参数
泛型可以使用任意多个参数类型。上面的 Stack 示例中只使用了一种类型。假设您创建了一个存储值和键的简单 Dictionary 类。在程序中可以通过声明两个参数(放在类定义的尖括号中并用逗号分隔)来定义一个泛型版本的 Dictionary 类:
public class Dictionary<KeyType, ValType>
{
public void Add(KeyType key, ValType val)
{
...
}
public ValType this[KeyType key]
{
...
}
}
作者:Prashant Sridharan 责编:豆豆技术应用