C#语言的定义主要是从C和C++继承而来的,而且语言中的许多元素也反映了这一点。和Java相比,C#从C++继承的可选选项方面更要广泛一些,并且C#还增加了自己独有的新特点。C#的特点主要体现在如下四个方面。
1.从Java继承
C#从Java中继承了它的大多数特点,包括实用语法和范围等。例如最基本的“类”,在C#中类的声明方式和在Java中很相似。Java的关键字import在C#中被替换成了using,但是它们起到了同样的作用,并且一个类开始执行的起点是静态方法Main()。
2.从C和C++继承
C#从C和C++继承的特点主要体现在如下三个方面。
编译:程序直接编译成标准的二进制可执行形式,但C#的源程序并不被编译成二进制可执行形式,而是一种中间语言,类似于Java字节码。例如,一个名为Hello.cs的程序文件将被编译成名为Hello.exe的可执行程序。
结构体:一个C#的结构体与C++的结构体是相似的,因为它能够包含数据声明和方法,但是C#结构体与类是不同的,并且不支持继承。
预编译:C#中存在预编译指令支持条件编译、警告、错误报告和编译行控制。
3.C#独有的特点
和C、C++和Java相比,C#的独有特点主要体现在如下几个方面。
中间代码:微软公司在用户选择何时MSIL(微软中间语言)应该编译成机器码的时候预留了很大的余地。微软公司声称MSIL不是解释性的,而是被编译成了机器码。而这种实现方式决定了基于MSIL的程序将在性能上超过“解释性的”Java代码,但是JavaJIT编译器的普遍存在使得Java和C#在性能上基本相同。所谓的“C#是编译语言而Java是解释性的”之说也只是商业技巧。Java的中间代码和MSIL都是中间的汇编形式的语言,它们在运行时或其他的时候被编译成机器代码。
命名空间中的声明:当创建一个程序的时候,在一个命名空间里创建了一个或多个类,在这个命名空间里还有可能声明界面、枚举类型和结构体,并必须使用using关键字来引用其他命名空间的内容。
拥有比C、C++或Java更多的数据类型:例如有bool、byte、ubyte、short、ushort、int、uint、long、ulong、float、double和decimal。这些数据类型都有一个固定的大小,并且每个数据类型都分为有符号类型和无符号类型两种。(www.xing528.com)
有两个基类:在C#中,object类是所有其他类的基类。另外,string类也和object一样是C#语言的一部分。无论何时在程序中写入一句带引号的字符串,编译器会创建一个string对象来保存它。
传递参数:C#能够传递数目可变的参数,默认的参数传递方法是对基本数据类型进行值传递。使用ref关键字可以用来强迫一个变量通过引用传递,这使得一个变量可以接受一个返回值。使用out关键字也可以声明引用传递过程,它和ref不同的是指明这个参数并不需要初始值。
与COM的集成:COM是微软公司的Win32组件技术,最有可能在任何.NET语言里编写COM客户和服务器端。C#能够实现对Windows程序与COM的无缝集成。使用C#编写的类,可以子类化一个已存在的COM组件,生成的类也能被作为一个COM组件使用,然后又能重复使用。
索引下标:一个索引与属性用一个方括号中的数字来匿名引用,而不使用属性名来引用类成员。
4.基本特点
C#的基本特点主要体现在如下几点:
简单:和C++相比,C#的学习更加简单。
面向对象:C#支持所有关键的面向对象的概念,例如封装、继承和多态性。完整的C#类模式构建在NGWS运行时的虚拟对象系统的上层,对象模式只是基础的一部分,不再是编程语言的一部分。
类型安全:在使用过程中必须遵守C#中一些相关变量的规则,因为C#使用了最严格的类型安全来保护自己及垃圾收集器。所以不能使用没有初始化的变量,取消不安全的类型转换,实施边界检查。
兼容:C#允许使用NGWS的通用语言规定来访问不同的API。在CLS中规定了一个标准,能够实现在符合这种标准的语言的内部之间进行操作。为了加强CLS的编译,C#编译器检测所有的公共出口编译,并在不通过时列出错误。
灵活:C#在访问原始Win32代码时,可能会导致对非安全类指定指针的使用。虽然C#代码的默认状态是类型安全的,但是可以声明一些类或仅声明类的方法是非安全类型的。这样的声明允许使用指针、结构,并静态地分配数组。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。