欢迎来到天天文库
浏览记录
ID:41033075
大小:537.50 KB
页数:53页
时间:2019-08-14
《针对Java 开发人员的 C# 编程语言》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、正在处理中,请稍后……窗体顶端 [C#学习.载]VisualStudio:针对Java开发人员的C#编程语言发布日期:7/23/2004
2、更新日期:7/23/2004本文讨论Java和C#之间的异同点,目的在于当迁移到.NET时,让Java开发人员掌握所涉及的一些知识。Java和C#之间的主要相似点是:•Java和C#都源于C++,并且共有C++的一些特征。•两种语言都需要编译成中间代码,而不是直接编译成纯机器码。Java编译成Java虚拟机(JavaVirtualMachine,JVM)字节码,而C#则编译成公共中间语言(C
3、ommonIntermediateLanguage,CIL)。•Java字节码是通过称为Java虚拟机(JVM)的应用程序执行的。类似地,已编译的C#程序由公共语言运行库(CommonLanguageRuntime,CLR)执行。•除了一些细微的差别以外,C#中的异常处理与Java非常相似。C#用try...catch构造来处理运行时错误(也称为异常),这和Java中是完全一样的。System.Exception类是所有C#异常类的基类。•同Java一样,C#是强类型检查编程语言。编译器能够检测在运行时可能会出现问题的类型错误
4、。•同Java一样,C#提供自动垃圾回收功能,从而使编程人员避免了跟踪分配的资源。•Java和C#都支持单一继承和多接口实现。现在让我们看一看本文涵盖的重要差异:•C#语言引入了一些新的语言构造,如foreach、索引器、属性、委托、运算符重载和其他语言构造。在本文后面我们将更详细地讨论这些构造。本页内容源文件约定顶层声明完全限定名和命名空间别名预处理指令语言语法转换和强制转换值类型和引用类型装箱(Boxing)和拆箱(Unboxing)运算符流程控制类基础Main()方法其他方法使用不确定数目的参数属性结构C#中的数组继承和
5、派生类将类型强制转换到基类选择构造函数方法重写抽象类接口运算符重载异常高级C#技术垃圾回收安全代码和不安全代码小结源文件约定我们需要知道,两种语言在源程序的文件命名约定和结构上有一些不同:文件命名包含C#类的文件的命名约定与Java有点不同。首先,在Java中,所有源文件的扩展名都为.java。每个源文件都包含一个顶层公共类声明,并且类名必须与文件名相匹配。换句话说,一个用公共范围声明的名为Customer的类必须定义在具有名称Customer.java的源文件中。而C#源代码是由.cs扩展名表示的。与Java不同,源文件可以
6、包含多个顶层公共类声明,而文件名不需要与任何类名相匹配。返回页首顶层声明在Java和C#中,源代码以按一定顺序排列的顶层声明开始。Java和C#程序中的声明只存在少许差别。Java中的顶层声明在Java中,我们可以用package关键字将类组合在一起。打包的类必须在源文件的第一个可执行的行中使用package关键字。接着出现的是需要访问其他包中的类的任何导入语句,之后是类声明,比如:package;import.;classCustomer{...}C#中的顶层声明C#使用命名空间的概念,通过namespace关键字将逻辑上相
7、关的类组合在一起。这些做法类似于Java包,而具有相同名称的类可以出现在两个不同的命名空间中。要访问定义在当前命名空间之外的命名空间中的类,我们可以使用紧跟该命名空间名的using关键字,如下所示:using.;namespace{classCustomer{...}}注意,using语句可以完全合法地放在命名空间声明中,在这种情况下,这样导入的命名空间就形成了包含命名空间的一部分。Java不允许在相同的源文件中有多个包,而C#允许在一个.cs文件中有多个命名空间:namespaceAcmeAccounting{publicc
8、lassGetDetails{...}}namespaceAcmeFinance{publicclassShowDetails{...}}返回页首完全限定名和命名空间别名同Java一样,通过提供类的完全限定名(如System.Data.DataSet或上面的示例中的AcmeAccounting.GetDetails),我们可以在没有命名空间的using引用的情况下访问.NET或用户定义的命名空间中的类。完全限定名可能会变得很长而不便于使用,在这种情况下,我们可以使用using关键字来指定一个简称或别名,以提高代码的可读性。在下
9、面的代码中,创建了一个别名来引用由一个虚构的公司所编写的代码:usingDataTier=Acme.SQLCode.Client;usingSystem;publicclassOutputSales{publicstaticvoidMain(){intsales=DataTi
此文档下载收益归作者所有