-2
我即將使用Data.Annotations庫和[Range(1,int.maxValue)]屬性。我正在交戰int.maxValue用法,因爲我將有許多這樣的屬性每個類,並且我不想添加到內存 int.maxValue每次我調用此。C#中的最大整數使用情況
我猜測它不會重複值,因爲int是一個結構,並且CLR將只存儲一個指向堆中值的鏈接。我對嗎?
我即將使用Data.Annotations庫和[Range(1,int.maxValue)]屬性。我正在交戰int.maxValue用法,因爲我將有許多這樣的屬性每個類,並且我不想添加到內存 int.maxValue每次我調用此。C#中的最大整數使用情況
我猜測它不會重複值,因爲int是一個結構,並且CLR將只存儲一個指向堆中值的鏈接。我對嗎?
所以,我每次調用int.MaxValue時 - 我將在堆中分配額外的4 字節,對吧?
實際上,當您給int.MaxValue
作爲整個屬性的參數時,它實際上會分配內存。由於值類型按值傳遞,因此它們被複制,而不是創建對同一對象的引用。
public void X(int a)
{
}
X(int.MaxValue); // copy, copy, copy, copy!
不,它是相反的:值類型(結構)總是按值複製。但是我們只在那裏談論4個字節,您不必擔心屬性的內存使用情況...... –
謝謝!所以,每次我調用int.MaxValue時 - 我會在堆中分配額外的4個字節,對吧? – Vnuuk