自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

概述C#使用指針

開發(fā) 后端
這里介紹C#使用指針,這是C/C++程序迷們經(jīng)常談?wù)摰囊粋€話題,同時也是一個復(fù)雜的、難以理解的話題-指針!每次談到C#,大多數(shù)我遇到的人都持這樣的觀點-C#中沒有指針的概念。

這是C/C++程序迷們經(jīng)常談?wù)摰囊粋€話題,同時也是一個復(fù)雜的、難以理解的話題-指針!每次談到C#,大多數(shù)我遇到的人都持這樣的觀點-C#中沒有指針的概念。而實際上,它已經(jīng)被廢除了,取而代之的是C#中的非安全編程-如何在程序中使用指針。不同于其字面意思的是,C#使用指針編程并沒有什么不安全的。

它如此受關(guān)注的根本原因是,非安全編程不同于習慣的.NET開發(fā)規(guī)范,而需要編程人員進行明確定本地環(huán)境設(shè)置(僅適用于本地執(zhí)行)。本文我將從區(qū)別兩個最容易被疑惑的概念-非安全代碼與非受控代碼開始討論非安全編程這個主題。接下來我們將討論如何編寫非安全代碼,亦即如何在C#使用指針。

非安全還是非受控?

受控代碼是指在CLR管理下執(zhí)行的代碼。CLR負責了許多幕后的工作:
◆管理對象的內(nèi)存
◆進行類型驗證
◆垃圾回收

說了這些,實際就是要將用戶從上述的這些工作中解脫出來了,專心于業(yè)務(wù)實現(xiàn)。用戶不再需要直接手工地進行內(nèi)存操作,因為這些工作已由CLR完成了。

另一方面,非受控代碼就是在CLR上下文外執(zhí)行的代碼了。最好的例子就是我們平時使用的Win32 DLL,比如kernel32.dll,user32.dll以及安裝上我們系統(tǒng)上的各種COM組件。如何為它們分配內(nèi)存、如何釋放這些內(nèi)存、如何實現(xiàn)類型驗證?這些工作都需要它們自己來完成。一個典型的C++程序中分配一個字符指針的語句也是非受控代碼的另一類例子,因為作為一名編程者,你要負責:
◆調(diào)用內(nèi)存分配函數(shù)
◆確保類型轉(zhuǎn)換的結(jié)果正確
◆確保指針在使用完畢后其內(nèi)存被釋放

如果你留心上面的解釋,所有這些工作都是由CLR來完成以減輕編程者的負擔。

非安全代碼是介于受控與非受控代碼間的一種代碼類型

非安全代碼仍然象受控代碼一樣是在CLR的管理下執(zhí)行的,但在同時它又象非受控代碼一樣允許你通過指針直接訪問內(nèi)存。因此你獲得了兩者的優(yōu)點。如果你正在編寫寫一個.NET應(yīng)用程序,但同時又希望可以廣泛使用Win32 DLL中的各種函數(shù)-需要C#使用指針的,那么此時非安全代碼就是你的救星了。

我們已經(jīng)明確了兩者的區(qū)別后,就開始編寫實際的代碼,毫無疑問,這才是最精彩的部分,你還在想什么呢?
深入非安全代碼

編寫非安全代碼需要使用特殊的關(guān)鍵字unsafe與fixed。如果你還記得的話,有三種指針操作符:*  &  ->

【編輯推薦】

  1. C#特有線程功能
  2. 淺談C#對象和集合
  3. 淺析C# FTP WebRequest對象
  4. C#分部方法的應(yīng)用場景
  5. 概述C#線程功能
責任編輯:佚名 來源: 博客園
相關(guān)推薦

2009-08-25 16:49:44

C#使用if語句

2009-08-21 15:16:23

C#使用指針

2009-08-13 15:48:57

C#指針

2009-08-25 10:08:39

C# MyData對象

2009-08-19 11:09:00

C# Cast<T>

2009-08-24 18:09:13

C#構(gòu)造函數(shù)

2009-08-20 16:28:45

C#匿名方法

2009-09-03 10:42:16

C# Employee

2009-08-17 09:57:00

C# Windows

2009-08-18 09:26:07

C#線程功能

2009-08-13 15:18:23

C#文件上傳

2009-08-31 09:44:23

C# Employee

2009-07-31 14:08:54

C# 匿名函數(shù)

2009-09-03 11:15:38

C#設(shè)置Coopera

2009-08-18 17:37:57

C#固定指針

2009-09-02 16:02:52

C#引用托管對象

2009-08-21 17:11:41

C#調(diào)用Active組

2009-08-17 10:54:53

C#執(zhí)行ping命令

2009-08-14 16:54:19

C# Hello Wo

2009-08-12 11:33:23

C#實現(xiàn)文件下載
點贊
收藏

51CTO技術(shù)棧公眾號