- 以前不管是在C還是OC語言以及swift中還是其他語言中,當(dāng)我們認(rèn)為兩個(gè)變量使用的是同一塊內(nèi)存地址的時(shí)候
- 最簡單的方法就是直接打印地址,然而在C#中,打印地址卻變得不那么容易了
首先,需要引入System.Runtime.InteropServices;
之后才能使用使用一些手段進(jìn)行地址的打印
using System;
// 獲取地址需要引入的庫
using System.Runtime.InteropServices;
class MainClass
{
public static string getMemory(object o) // 獲取引用類型的內(nèi)存地址方法
{
GCHandle h = GCHandle.Alloc(o, GCHandleType.Pinned);
IntPtr addr = h.AddrOfPinnedObject();
return "0x" + addr.ToString("X");
}
public static void Main (string[] args)
{
int[] a = new int[1];
int[] b = new int[1];
// b=0 ,未賦值前b的地址是:0x8008E8
Console.WriteLine("b={0,-2},未賦值前b的地址是:{1}", b[0],getMemory(b));
a[0] = 3;
b = a;// 此句賦值是b引用a的地址,此時(shí)a和b表示同一個(gè)內(nèi)存空間地址
b[0] = 33;
// b=33,賦值后b的地址是:0x8008D0
Console.WriteLine("b={0},賦值后b的地址是:{1}", b[0],getMemory(b));
// a=33,a的地址是:0x8008D0
Console.WriteLine("a={0},a的地址是:{1}", a[0],getMemory(a));
}
}
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。