C#是微软推出的一种基于.NET框架的、面向对象的高级编程语言。
C#以.NET框架类库作为基础,拥有类似Visual Basic的快速开发能力。
C#由安德斯·海尔斯伯格主持开发,微软在2000年发布了这种语言,希望借助这种语
言来取代Java。
设计目标
ECMA标准列出的C#设计目标:
1.C#旨在设计成为一种“简单、现代、通用”,以及面向对象的程序设计语言
2.此种语言的实现,应提供对于以下软件工程要素的支持:强类型检查、数组维度检
查、未初始化的变量引用检测、自动垃圾收集(Garbage Collection,指一种存储器
自动释放技术)。
软件必须做到强大、持久,并具有较强的编程生产力。
3.此种语言为在分布式环境中的开发提供适用的组件开发应用。
4.为使程序员容易迁移到这种语言,源代码的可移植性十分重要,尤其是对于那些已
熟悉C和C++的程序员而言。
5.对国际化的支持非常重要。
6.C#适合为独立和嵌入式的系统编写程序,从使用复杂操作系统的大型系统到特定
应用的小型系统均适用。
7.虽然C#程序在存储和操作能力需求方面具备经济性,但此种语言在某些情况下并
不能在性能和程序大小方面与C语言相抗衡。
语言特性
1. 相对于C和C++,这个语言在许多方面进行了限制和增强:
2. 指针(Pointer)只能用于不安全模式之中。大多数对象访问通过安全的引用实
现,以避免无效的调用,并且有许多算法用于验证溢出,指针只能用于调用值类
型,以及受垃圾收集控制的托管对象。
3. 对象不能被显式释放,代替为当不存在被引用时通过垃圾回收器回收。
4. 只允许单一继承(single inheritance),但是一个类可以实现多个接口
(interfaces)。
5. C#比C++更加类型安全。默认的安全转换是隐含转换,例如由短整型转换为长整
型和从派生类转换为基类。而接口布尔型同整型,及6. 枚举型同整型不允许隐含转换,非空指针(通过引用相似对象)同用户定义类型
的隐含转换字段被显式的确定,不同于C++的复制构造函数。
7. 数组声明语法不同("int[] a = new int[5]"而不是"int a[5]")。
枚举位于其所在的名字空间中。
8. C#中没有模版(Template),但是在C# 2.0中引入了泛型(Generic
programming),并且支持一些C++模版不支持的特性。比如泛型参数中的类型
约束。另一方面,表达式不能像C++模版中被用于类型参数。
属性支持,使用类似访问成员的方式调用。
9. 完整的反射支持。
特点
1. 简单、安全
在 C++ 和 C 语言中程序员最头疼的问题就是指针问题,在 C# 语言中已经不再
使用指针,而且不允许直接读取内存等不安全的操作。
它比 C、C++、Java 提供了更多的数据类型,并且每个数据类型都是固定大小
的。
此外还提供了命名空间来管理 C# 文件,命名空间 相当于一个文件夹,在创建程
序时,允许在一个命名空间中创建一个或多个类,方便调用和重用。
2. 面向对象
与其他面向对象语言一样,C# 语言也具有面向对象语言的基本特征,即封装、
继承、 多态。
封装:就是将代码看作一个整体,例如使用类、方法、接口等。在使用定义好的
类、 方法、接口等对象时不必考虑其细节,只需要知道其对象名以及所需要的
参数即可,也是一种提升代码安全性的方法。
继承:是一种体现代码重用性的特性,减少代码的冗余,但在 C# 语言中仅支持
单继承。
多态:不仅体现了代码的重用性,也体现了代码的灵活性,它主要通过继承和实
现接口的方式,让类或接口中的成员表现出不同的作用。
3. 支持跨平台
最早的 C# 语言仅能在 Windows 平台上开发并使用,目前最新的 C# 6.0 版本已
经能在多个操作系统上使用,例如在 Mac、Linux 等。此外,还能将其应用到手
机、PDA 等设备上。