C++与C#界面编程比较

不知道从那看的,就挂个原创吧

 

C++

优点:

1. 容易调用底层代码,运行效率高。主要用于操作系统,设备驱动程序,视频游戏等领域。如果用于编写界面程序,运行速度将很快。

2. 可直接调用C语言代码,在编写界面程序时,能够直接调用系统API,比较适合跟系统底层打交道多的程序。如杀毒程序等。

3. 界面编程可使用MFCWTL等,MFC使用方便,类库繁多,能够很简单的写出正常界面的程序。WTL为轻量级界面库,代码更加简洁,但WTL不受微软官方维护。

4. MFC的对系统的封装不够彻底,例如选择文件框,只有选择文件的类,并不提供选择文件夹的类,许多功能需要自己实现,开发较慢。

5. MFC中有各种基本的Windows控件,但是操作或修改都需要自己画控件了。

6. 语言特性:

 

宽松类型检查,支持宏;但建议用Const来定义常量,具有类型安全检查机制

类可多继承,但并不推荐多继承

C++支持模板类

需要手动管理内存,指针使用方便,效率

单层命名空间

变量不初始化也能使用

支持Try/Catch异常处理

支持函数指针,无类型安全检查

 

缺点:

1. 没有数组边界检查,容易溢出。指针操作容易出错。内存管理需要耗费大量精力。

2. 界面画图需要调用系统API,有些Windows平台API不同,可能导致画出界面的效果出问题。

3. 美化界面难度很高,使用商业控件的价格不菲。

4. C++C的超集,为了兼容C语言,使得程序发展得非常复杂,造成开发周期长,成本高

5. 界面编程不是C++的强项,用C++编写界面程序需要一砖一瓦全部自己搭建,当然自由度很高,但是代码量更多,容易出Bug,耗时间。

 

C#

优点:

1. 集成大量类库,开发效率高,开发周期短。主要用于开发Windows应用软件,企业管理,网络应用等领域。

2. 可利用除界面代码以外的C++代码。但是需要通过C++\CLI, COM组件,PInvoke等形式。

3. .Net内封装了大量网络应用,数据库方面的类库,直接调用非常方便,支持串口,TCP编程等。

4. 界面编程可使用WinformWPF。其中WPF属于新一代界面引擎,无需通过GDI+画图, 直接与显卡DirectX交互,渲染速度很快。WPF是微软专门为界面编程打造的类库。

5. WPF中有更丰富的Windows控件,修改也比较方便。有些直接改Xaml的样式即可。

6. 语言特性:

 

强制类型检查,所有类型继承至Object类型;不支持宏;

类单继承,接口多继承

C#支持泛型

C#支持动态语言特性

自动内存回收管理

多层命名空间

变量初始化后才能使用

自动检查数组边界

支持Try/Catch/Final异常处理

“委托”可模拟函数指针,是一个对象,支持类型安全检查。 

 

 

缺点:

1. 需要在Windows系统上安装.Net运行库,.Net 4.0 大概40MB左右。只与.Net运行库相关,与Windows平台无关,Winxpwin7win2008运行无区别。

2. 需要解析成中间代码再被解释器运行,运行速度较慢。

3. 调用系统API,需使用PInvoke间接调用,需要先声明为PInvoke接口,不能直接调用。

 

更多:

1. C++的代码错误容易引起安全问题,造成内存泄漏,运行出错。C#的代码错误容易引起性能问题。如果追求性能,用C++,如果追求安全,用C#

2. C++的开发难度高,开发周期较长,但是运行效率高;C#的开发难度低,开发效率高,运行效率低;

3. C++注重实现功能,只要时间充裕,可以实现非常强大的功能;C#更加注重软件工程的应用,各种设计模式的使用,面向对象,是现代软件工程的思想体现。适合企业内高效的开发模式;

4. C++MFC界面编程难度较高,美化界面需要大量代码的支持。C#WPF的界面编程很简单,界面代码与程序代码分开,界面可使用可视化设计程序,如Expression Blend设计。

5. C++对串口,网络TCP,数据库方便的编程都支持,但是没有现成的完整类库调用,需要大量代码支持。 C#中这些都已经有类库,直接调用即可。代码量少很多。

6. C++打造界面像使用画笔画图,想怎么画就怎么画,结果取决于画家的功力;C#打造界面像使用Photoshop画图,不会画画的人也能画出一些精美图片来。

 

 

你可能感兴趣的:(C/C++)