选择显示字体大小

c#中的非安全编程


  介绍

  这是c/c++程序迷们经常谈论的一个话题,同时也是一个复杂的、难以理解的话题-指针!每次谈到c#,大多数我遇到的人都持这样的观点-c#中没有指针的概念。而实际上,它已经被废除了,取而代之的是c#中的非安全编程-如何在程序中使用指针。 不同于其字面意思的是,使用指针编程并没有什么不安全的。

  它如此受关注的根本原因是,非安全编程不同于习惯的.net开发规范,而需要编程人员进行明确定本地环境设置(仅适用于本地执行)。本文我将从区别两个最容易被疑惑的概念-非安全代码与非受控代码开始讨论非安全编程这个主题。接下来我们将讨论如何编写非安全代码,亦即如何在c#中使用指针。

  安全还是非受控?

  受控代码是指在clr管理下执行的代码。clr负责了许多幕后的工作:

   管理对象的内存

   进行类型验证

   垃圾回收

  说了这些,实际就是要将用户从上述的这些工作中解脱出来了,专心于业务实现。用户不再需要直接手工地进行内存操作,因为这些工作已由clr完成了。

  另一方面,非受控代码就是在clr上下文外执行的代码了。最好的例子就是我们平时使用的win32 dll,比如kernel32.dll,user32.dll以及安装上我们系统上的各种com组件。如何为它们分配内存、如何释放这些内存、如何实现类型验证?这些工作都需要它们自己来完成。一个典型的c++程序中分配一个字符指针的语句也是非受控代码的另一类例子,因为作为一名编程者,你要负责:

   调用内存分配函数
   确保类型转换的结果正确
   确保指针在使用完毕后其内存被释放

  如果你留心上面的解释,所有这些工作都是由clr来完成以减轻编程者的负担。

  非安全代码是介于受控与非受控代码间的一种代码类型

  非安全代码仍然象受控代码一样是在clr的管理下执行的,但在同时它又象非受控代码一样允许你通过指针直接访问内存。因此你获得了两者的优点。如果你正在编写写一个.net应用程序,但同时又希望可以广泛使用win32 dll中的各种函数-需要使用指针的,那么此时非安全代码就是你的救星了。

  我们已经明确了两者的区别后,就开始编写实际的代码,毫无疑问,这才是最精彩的部分,你还在想什么呢?


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons