簡體   English   中英

在C#中存儲數組的位置

[英]Store the location of an array in C#

我希望能夠存儲對數組的引用,但不能真正確定是否需要指針或從何處開始。 我正在尋找類似於將ref與函數一起使用的功能,但要在變量中使用。

假設您有一個數組:

int[] a = new int[42];

變量a是對數組的引用。 您可以像這樣制作另一個:

int[] b = a;

現在, ab引用相同的數組。

您可以為這樣的元素分配值:

a[0] = 666;

然后使用其他引用查看相同的值:

Debug.Assert(b[0] == 666);

這歸結為數組是引用類型的事實。 因此,賦值運算符會將引用復制到對象,而不復制對象本身。 將其與值類型 (例如結構)進行對比,賦值運算符為其復制對象的值。

如果要存儲對數組的引用,則無需使用高級語言(例如C#)的指針(對存儲位置的引用),因為它們是引用類型。 所有引用類型變量的工作方式都類似於指針,但是在高級語言(例如C#)中,引用內存位置的過程是完全自動的,並且對用戶隱藏。

我已經回答了一個關於指針(在Java中)的問題在這里 即使語言不同,Java還是像C#這樣的高級語言,並且引用內存位置的過程也相似。

關於您的問題,如果您有一個像這樣的數組:

int[] myArray = new int[2];

您可以將其引用存儲在另一個數組中,如下所示:

int[] myStoredArrayRef = myArray;

現在,這兩個對象引用了相同的數組,因為它們引用了內存中的相同“位置”(您復制了其引用)。 確實,如果您以這種方式修改myArray的元素:

myArray[0] = 123;

myStoredArrayRef的元素也會更改:

Console.WriteLine(myStoredArrayRef[0]); //it will print '123';

您還可以存儲對List的引用,因為它們是引用類型 (如@DavidHeffernan正確指出的),就像數組一樣,使用相同的過程。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM