这两天在学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修饰符阻止移动对象o 15 console.WriteLine("vale"); 16 17 } 18 } 19 }
指针的内容就不在此继续回顾了,今天就到这,谢谢阅读。