C#编程语言的未来功能

http://tech.ddvip.com   2007年10月05日    社区交流

内容摘要:Microsoft Corporation 正在开发 C# 语言的下一个主要版本。本文介绍了四种主要的新功能,即泛型、迭代程序、匿名方法和局部类型。

  生成最新的泛型类

  利用目前的 C#,程序员可以通过在基本对象类型的实例中存储数据来创建有限形式的真正泛型。由于在 C# 中每个对象都是从基本对象类型继承的,再加上统一 .NET 类型系统的装箱和取消装箱功能,程序员可以将引用类型和值类型存储到对象类型的变量中。但是,对于引用类型、值类型与基本对象类型之间的转换,还有一些性能缺陷。

  为了说明这一点,以下代码示例创建了一个简单的 Stack 类型,其中包含两个操作“Push”和“Pop”。Stack 类将其数据存储在对象类型的数组中,Push 和 Pop 方法使用基本对象类型来接受和返回数据:

public class Stack
{
  private object[] items = new object[100];
  public void Push(object data)
  {
   ...
  }
  public object Pop()
  {
   ...
  }
}

  然后,就可以将自定义类型(例如 Customer 类型)压入堆栈。但是,如果程序需要检索数据,则需要将 Pop 方法的结果(基本对象类型)显式转换成 Customer 类型。

Stack s = new Stack();
s.Push(new Customer());
Customer c = (Customer) s.Pop();

  如果将一个值类型(例如一个整数)传递给 Push 方法,运行时会自动将其转换为引用类型(该过程称作装箱),然后将其存储在内部数据结构中。与此类似,如果程序要从堆栈中检索一个值类型(例如一个整数),则需要将从 Pop 方法获取的对象类型显式转换成值类型,该过程称作取消装箱:

Stack s = new Stack();
s.Push(3);
int i = (int) s.Pop();

  值类型和引用类型之间的装箱和取消装箱操作非常繁重。

作者:Prashant Sridharan    责编:豆豆技术应用

正在加载评论...