【C#学习】不安全代码

8/3/2015来源:C#应用人气:1192

【C#学习】不安全代码

今天第一天写技术随笔,写的不好,望读者海涵。

这两天在学C#中的不安全代码,听到这个名字,首先想到的就是既然不安全为什么还要有这样的功能,为什么还要使用呢?其实,这与我们现实生活中的很多事存在或者处理的道理是一样的,如果对于我们的目标,它是利大于弊的话,那就有选择它的原因。而所谓的不安全代码,并不是指拙劣的代码,而是这类代码的执行不受公共语言运行时(CLR)的完全管理,即非托管的代码,这种代码没有与托管代码相同的控制和约束,由于不受CLR的完全控制,也无法检验该代码以确保其不执行有害的操作,所以叫做“不安全代码”。

在C#中使用不安全代码的主要目的是为了使用指针,因为指针的不安全性,托管代码不支持指针,但是对于一些特定类型的编程工作,使用指针会实现高性能的系统代码。

在C#中,指针的使用和声明与C/C++中是一样的。需要注意的是任何使用指针的代码都必须通过使用unsafe标记为不安全,可以将类型(如类或者结构),成员或单独的代码块标记为不安全。如下面:

 1 using Syetem; 2 class  Test{ 3 public int num; 4 public Test(int i) 5 { 6 num=i; 7 } 8 } 9 10 class EixedCode{11 unsafe static void Main()12 {13 Test o=new Test(2);14 fixed(int * p=&ol.num){  //使用指针时,通常会使用fixed修饰符,它可以防止垃圾回收器移动托管代码,这里fixed修饰符阻止移动对象o15 console.WriteLine("vale");16 17 }18 }19 }

指针的内容就不在此继续回顾了,今天就到这,谢谢阅读。