欢迎来到天天文库
浏览记录
ID:36312679
大小:147.50 KB
页数:19页
时间:2019-05-09
《c# 编程语言的未来功能》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、showtoc欢迎来到MSDN>开发语言和工具C#编程语言的未来功能发布日期:4/30/2003
2、更新日期:6/25/2004PrashantSridharanMicrosoftCorporation适用于:Microsoft®VisualC#(TM)摘要:MicrosoftCorporation正在开发C#语言的下一个主要版本。本文介绍了四种主要的新功能,即泛型、迭代程序、匿名方法和局部类型。本页内容简介泛型迭代程序匿名方法局部类型符合标准可用性更多信息简介C#是创新性的新式编程语言,它巧妙地结合了最常用的行业语言和研究语言中的功能。在保持C#设计思想不变的同时,Micro
3、soft在C#语言中引入了几种潜在的新功能,提高了开发人员在语言构造方面的效率。MicrosoftC#自2001年2月C#问世以来,很多开发人员已经开始使用C#编程语言来构建软件。而Microsoft自身也使用C#构建了几种正式的应用程序,包括.NETFramework、MSNWeb属性和TabletPCSDK。由此可见,C#是一种适用于构造高品质商业软件的语言。C#语言中的许多功能是基于以下四种不同设计目标而创建的:•统一的类型系统以及简化值类型和引用类型在C#语言中的用法。•通过XML注释、特性、属性、事件和委托等功能建立基于组件的设计。•借助C#语言的独特功能(包括安全
4、的指针操作、溢出检查等)建立实用的开发人员控制功能。•建立诸如foreach和using语句这样的实用语言构造,提高开发人员的效率。在C#语言的“VisualStudioforYukon”版本中,Microsoft计划通过将广泛的研究语言和行业语言中的各种功能结合在一起建立一种简洁、实用的语法。这些语言功能包括泛型、迭代程序、匿名方法和局部类型。潜在的未来功能实际上,C#的未来创新功能主要基于统一的类型系统、基于组件的开发、开发人员控制功能和实用的语言构造。下面总结了Microsoft计划在C#语言的下一个主要版本中提供的四种主要的新功能。这些功能的设计尚未完成,Micros
5、oftCorporation欢迎广大的开发人员针对这些功能发表评论。返回页首泛型随着项目变得越来越复杂,程序员日益需要一种方法来更好地重复使用和自定义他们现有的基于组件的软件。为了实现在其他语言中重复使用高级代码,程序员通常要使用一种名为“泛型”的功能。C#将包括一种安全且高效的泛型,它与C++中的模板和Java语言中提出的泛型在语法上只是稍有差别,但在实现方式上却存在很大差别。生成最新的泛型类利用目前的C#,程序员可以通过在基本对象类型的实例中存储数据来创建有限形式的真正泛型。由于在C#中每个对象都是从基本对象类型继承的,再加上统一.NET类型系统的装箱和取消装箱功能,程序
6、员可以将引用类型和值类型存储到对象类型的变量中。但是,对于引用类型、值类型与基本对象类型之间的转换,还有一些性能缺陷。为了说明这一点,以下代码示例创建了一个简单的Stack类型,其中包含两个操作“Push”和“Pop”。Stack类将其数据存储在对象类型的数组中,Push和Pop方法使用基本对象类型来接受和返回数据:publicclassStack{privateobject[]items=newobject[100];publicvoidPush(objectdata){...}publicobjectPop(){...}}然后,就可以将自定义类型(例如Customer类型
7、)压入堆栈。但是,如果程序需要检索数据,则需要将Pop方法的结果(基本对象类型)显式转换成Customer类型。Stacks=newStack();s.Push(newCustomer());Customerc=(Customer)s.Pop();如果将一个值类型(例如一个整数)传递给Push方法,运行时会自动将其转换为引用类型(该过程称作装箱),然后将其存储在内部数据结构中。与此类似,如果程序要从堆栈中检索一个值类型(例如一个整数),则需要将从Pop方法获取的对象类型显式转换成值类型,该过程称作取消装箱:Stacks=newStack();s.Push(3);inti=(i
8、nt)s.Pop();值类型和引用类型之间的装箱和取消装箱操作非常繁重。而且,在当前的实现中,无法限制堆栈中放置的数据类型。实际上,可以先创建堆栈,然后将Customer类型压入堆栈。然后,可使用同一堆栈并尝试将数据弹出,接着将其转换为其他类型,如下例所示:Stacks=newStack();s.Push(newCustomer());Employeee=(Employee)s.Pop();尽管上一个代码示例错误地使用了要实现的单个类型Stack类,应视为错误,但它实际上却是合法代码,对它进行编译时不会
此文档下载收益归作者所有