C是一门低级的编程语言,它的效率和汇编(assembly language)接近,设计初衷是为了开发新版本的Unix。
C++是一门中级语言,出现是为了增强C语言且不牺牲速度和效率的前提下增加面向对象(object-oriented)的能力。
C#是一门高级的面向对象的编程语言,也被认为是面向组件(component)的编程语言,基于.NET框架。他将代码编译成字节码(byte-code)而不是机器码(0101的二进制),虚拟机再将字节码转换成机器码。
| 区别 | C | C++ |
|---|---|---|
| 本质 | 面向过程(procedural) | 既支持过程式又支持面向对象 |
| 代码运行 | C不能运行C++代码 | C++可以运行C代码 |
| 面向对象 | 否 | 是,支持封装、继承、多态 |
| 数据和函数 | 是自由的实体,可以使用外部代码来操作 | 数据和函数被封装成单一的对象,外部代码无法操作数据和函数 |
| 命名空间 | 否 | 使用命名空间将代码组织为逻辑组并阻止名称冲突 |
| 输入输出 | 函数 | 对象 |
| 引用变量 已经存在变量的别名 | 不支持 | 支持 |
| 错误和异常处理 | 不支持 | 支持 |
| 区别 | C++ | C# |
|---|---|---|
| 本质 | 面向对象 将多个类结合起来连接成一个可执行的二进制程序 | 面向组件(component) 使用可交换的代码模块 |
| 编译 | 代码编译成机器码 | 代码编译成CLR(一种.NET框架的虚拟机组件) |
| 内存处理 | 用户手动 | 运行在虚拟机中,虚拟机处理 |
| 指针 | 在任何时候都可以使用 | 不使用指针 |
| 运行环境 | 可以运行于任何平台 | 只能运行在windows环境下 |
| 创建程序 | 独立程序、控制台程序 | 控制台程序、windows程序、ASP.NET程序、移动程序 |



