真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

C#怎樣使用指針-創(chuàng)新互聯(lián)

創(chuàng)新互聯(lián)www.cdcxhl.cn八線動態(tài)BGP香港云服務器提供商,新人活動買多久送多久,劃算不套路!

成都創(chuàng)新互聯(lián)自2013年創(chuàng)立以來,是專業(yè)互聯(lián)網(wǎng)技術服務公司,擁有項目成都網(wǎng)站建設、網(wǎng)站設計網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元大慶做網(wǎng)站,已為上家服務,為大慶各地企業(yè)和個人服務,聯(lián)系電話:18982081108

C#怎樣使用指針?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

C#是一門解釋型語言,其中對指針進行了封裝,因此用戶無法直接調用對象的指針。但是當使用C#調用C/C++的DLL時,常常會函數(shù)參數(shù)或者返回值為指針的情況。這種情況下就需要對指針進行操作。

在C#中使用指針,需要首先回答以下幾個問題:

1. C#提供了哪幾種指針類型

C#提供的指針為IntPtr或者UIntPtr,用于表示指針或句柄的平臺特定類型。因此,IntPtr 可以用來表示指針或句柄、它是一個平臺特定類型。

1.1 IntPtr用在什么地方

(1)C#調用WIN32 API時

(2)C#調用C/C++寫的DLL時(其實和1相同,只是這個一般是我們在和他人合作開發(fā)時經(jīng)常用到)

1.2 如何使用IntPtr

例如有一函數(shù)原型定義為:

DllDemoAPI DLLGen* DLLGen_Create(HWND hWnd);

那么我們在C#中引用時就要這樣寫:

[DllImport("DLLGen.dll", EntryPoint = "DLLGen_Create", CallingConvention = CallingConvention.Cdecl)]
public extern static IntPtr DLLGen_Create(IntPtr hWnd);

這里涉及到C#類型與C++類型的對應關系,經(jīng)常用到的幾種如下:

(1)void *可以直接轉換為IntPtr。

(2)char *在C#中對應的為string類型。

2. 托管和非托管有什么不同

C#中實現(xiàn)內存分配空間的的自動分配和回收機制是使用托管內存來實現(xiàn)的,所謂托管內存就是由程序負責指針內存的分配,并通過計算指針的引用次數(shù)來判斷指針是否需要被釋放。

非托管是指將指針內存分配到非托管內存區(qū),這里分配的指針就需要自己分配內存,自己進行內存的回收。

3. 如何向在C/C++中一樣使用指針

在C#中,可以使用unsafe聲明,來實現(xiàn)對指針的操作。例如

unsafe
{
    int *ptr = new int[100];
    for (int i = 0; i < 100; i++)
    {
        *(ptr+i) = i;
    }
    delete[] ptr;
}

在unsafe模塊中,可以按照c/c++的方式來使用指針。

注意:使用unsafe模塊時,在C#工程屬性中勾選“允許使用不安全模塊”的選項。

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注創(chuàng)新互聯(lián)-成都網(wǎng)站建設公司行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)的支持。


新聞名稱:C#怎樣使用指針-創(chuàng)新互聯(lián)
文章地址:http://weahome.cn/article/cdejod.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部