程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 【C#學習】不安全代碼,

【C#學習】不安全代碼,

編輯:C#入門知識

【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修飾符阻止移動對象o
15 console.WriteLine("vale");
16 
17 }
18 }
19 }

指針的內容就不在此繼續回顧了,今天就到這,謝謝閱讀。

 


C/O是什?

c/o

以下結果由譯典通提供詞典解釋

縮寫詞 abbr.
1.
=care of由...轉交(書信用語)
2.
=carried over 【會計】結轉下頁;轉期交割(交易所用語)
3.
=cash order 【會計】即期票,現付票,現金票據;現金定貨單
 

【C語言】有沒有一個可以清除 緩存中的按鍵 的函數

fflush(stdin)
清空標准輸入緩存

#include "stdio.h"
main()
{
char a,b;
scanf("%c",&a);
//fflush(stdin);
scanf("%c",&b);
printf("\n%c %c",a,b);
}

可以嘗試,沒有fflush(stdin)時,輸入一串字符"abcd",則a='a',b='b'
如果有fflush(stdin),則在輸入"abcd"後程序會繼續等待輸入,再輸入"efdfsd",結果a='a',b='e'
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved