今天第一天寫技術隨筆,寫的不好,望讀者海涵。
這兩天在學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 }指針的內容就不在此繼續回顧了,今天就到這,謝謝閱讀。
新聞熱點
疑難解答