考慮下面的代碼:靜態成員是否存儲在.NET中的固定位置?
class Foo
{
static readonly Guid guid = Guid.Parse("...");
}
可以在初始化後的靜態場變化的基本地址?如果不是,該地址如何獲得?
常量呢?
注意:我明白引用類型通常可以由GC移動(無論是否存在具有對它們的句柄的靜態變量),但對於靜態值類型和常量它是如何工作的?
這個問題出現了,因爲我們正在研究一些需要與非託管API互操作的代碼,並且我們希望避免在HGlobal中執行額外的字節副本(如果它們已經在固定地址中)記憶開始。
我更感興趣的是瞭解CLI標準對此的看法(與具體的.NET實現確實如何,),因爲我更喜歡健壯的代碼,它不依賴於巧合的實現細節。
您是在問.NET的當前實現,還是CLI標準允許實現者在底層做什麼? –
[靜態類成員固定?]可能的重複?(http://stackoverflow.com/questions/33508517/are-static-class-members-pinned) –
@ORMapper:CLI標準,我想,雖然我' m總是對實現細節感到好奇:-) – Cameron