C#编程语言的未来功能
http://tech.ddvip.com 2007年10月05日 社区交流
内容摘要:Microsoft Corporation 正在开发 C# 语言的下一个主要版本。本文介绍了四种主要的新功能,即泛型、迭代程序、匿名方法和局部类型。
泛型与引用类型的工作方式稍有不同。首次使用任何引用类型构造泛型时,运行时用对象引用替换 IL 中的参数来创建专用的泛型。之后,每当使用引用类型作为参数实例化构造的类型时,无论构造的是何种类型,运行时都会重复使用先前创建的专用泛型。
例如,假设有两个引用类型,Customer 类和 Order 类,并进一步假设您创建了 Customer 类型的 Stack:
Stack<Customer> customers;
此时,运行时将生成专用 Stack 类,该类并不存储数据,而是存储随后填充的对象引用。假设下一行代码创建了一个其他引用类型的 Stack,称为 Order:
Stack<Order> orders = new Stack<Order>();
与值类型不同,没有为 Order 类型创建另一个专用的 Stack 类,而是创建了专用 Stack 类的实例并设置 orders 变量来引用它。对于替换类型参数的每个对象引用,按照 Order 类型的大小分配内存空间,并将指针设置为引用该内存位置。假设您随后遇到了一行用于创建 Customer 类型的 Stack 的代码:
customers = new Stack<Customer>();
同上一个使用 Order 类型创建的 Stack 类一样,创建了专用 Stack 类的另一个实例,并将其中包含的指针设置为引用 Customer 类型大小的内存区域。由于不同的程序在引用类型的数量上存在着很大差异,因此泛型的 C# 实现通过将引用类型的数量减少到编译器为引用类型的泛型类创建的专用类数量,大大降低了代码的膨胀速度。
此外,当使用类型参数(无论是值类型还是引用类型)实例化泛型 C# 类时,可以在运行时使用反射和实际类型进行查询,并且可以确定其类型参数。
C# 泛型与其他实现之间的差异
作者:Prashant Sridharan 责编:豆豆技术应用