2015-11-07 47 views
-2

我即將使用Data.Annotations庫和[Range(1,int.maxValue)]屬性。我正在交戰int.maxValue用法,因爲我將有許多這樣的屬性每個類,並且我不想添加到內存 int.maxValue每次我調用此。C#中的最大整數使用情況

我猜測它不會重複值,因爲int是一個結構,並且CLR將只存儲一個指向堆中值的鏈接。我對嗎?

+3

不,它是相反的:值類型(結構)總是按值複製。但是我們只在那裏談論4個字節,您不必擔心屬性的內存使用情況...... –

+0

謝謝!所以,每次我調用int.MaxValue時 - 我會在堆中分配額外的4個字節,對吧? – Vnuuk

回答

0

所以,我每次調用int.MaxValue時 - 我將在堆中分配額外的4 字節,對吧?

實際上,當您給int.MaxValue作爲整個屬性的參數時,它實際上會分配內存。由於值類型按值傳遞,因此它們被複制,而不是創建對同一對象的引用。

public void X(int a) 
{ 
} 

X(int.MaxValue); // copy, copy, copy, copy!