C#编程语言的未来功能
http://tech.ddvip.com 2007年10月05日 社区交流
内容摘要:Microsoft Corporation 正在开发 C# 语言的下一个主要版本。本文介绍了四种主要的新功能,即泛型、迭代程序、匿名方法和局部类型。
当程序按照以下示例使用 Stack 类时,您可以指定泛型类使用的实际类型。本例使用实例化语句中的尖括号标记将原始的整数类型指定为参数,指示 Stack 类使用此类型:
Stack<int> stack = new Stack<int>();
stack.Push(3);
int x = stack.Pop();
执行此操作时,程序将创建 Stack 类的新实例,其中的每个 ItemType 都被提供的整数参数替换。实际上,当程序用整数参数创建 Stack 类的新实例时,在 Stack 类内部本地存储的项目数组将为整数,而不是对象。程序还消除了与将整数压入堆栈相关联的装箱问题。此外,当程序从堆栈弹出项目时,您无需将其显式转换为相应的类型,因为 Stack 类的当前特定实例会将整数本地存储在其数据结构中。
如果希望程序在 Stack 类中存储其他类型的项目,则必须创建一个 Stack 类的新实例并将新类型指定为参数。假设有一个简单的 Customer 类型,希望程序使用 Stack 对象存储该类型。要实现此操作,只需实例化 Stack 类并将 Customer 对象作为其类型参数,即可轻松重复使用程序代码:
Stack<Customer> stack = new Stack<Customer>();
stack.Push(new Customer());
Customer c = stack.Pop();
当然,如果程序创建了一个将 Customer 类型作为参数的 Stack 类,则只能在该堆栈中存储 Customer 类型。实际上,C# 中的泛型具有严格的类型,这意味着您不能在该堆栈中存储整数,如以下示例所示:
Stack<Customer> stack = new Stack<Customer>();泛型的优点
stack.Push(new Customer());
stack.Push(3) // 编译时错误
Customer c = stack.Pop(); // 不需要类型转换。
作者:Prashant Sridharan 责编:豆豆技术应用