2010-06-05 21 views
0
class A 
{ 
public int a; 
public int c; 
} 

我將從A創建10個實例。然後我將再次從A創建15個實例...繼續。前10個實例的變量值相同,接下來的15個實例的a值也會相同。但我並不是說這兩個組的值都相同。問題是在第一組中創建相同的值10次,第二組內存時間不必要。在類成員變量中減少不必要的相同值

什麼是最好的解決方案或解決方案在這種情況下減少不必要的數據?

+0

哪種語言? – crazyscot 2010-06-05 15:41:54

+0

我不知道它是一個語言相關的問題。如果它確實是相關的,所以C#或Java可以。 – Freshblood 2010-06-05 15:50:29

+0

是的,它也和語言有一點關係。在C語言中,我們也可以使用指針.net,我們可以使用指針,但編寫不安全的代碼不會吸引我。 – Freshblood 2010-06-05 16:07:51

回答

0

如果ac實際上只是整數,它將不值得你花時間試圖優化它們的內存空間;在大多數情況下,任何你用來做的事情都會比整數本身佔用更多的空間。

但是,如果ac實際上是佔用的內存量顯著的對象,你可以改爲把對象指針(或持有人,根據語言)爲A,而不是對象本身的成員。這種方式是指針中唯一重複的內存。

+0

對象指針是指參考類型變量嗎?如果是的話,我在下面給出類似的答案。但是我不知道需要多少空間才能成爲會員。 – Freshblood 2010-06-05 16:11:37

+0

對現有對象的引用通常只是指針,並佔用少量內存。 – VeeArr 2010-06-05 17:18:36

0

很明顯,靜態成員將無法解決此問題。因爲實例組將具有不同的值。

這可能是其中的一種解決方案。其他方面還有哪些?

class Common 
{ 
    public int a; 
} 
class A 
{ 
    public Common a; 
    public int c; 
} 
0

請問HashSet<T>有幫助嗎?

+1

我不這麼認爲 – Freshblood 2010-06-05 16:09:26

0

另一種解決方案是

class A 
{ 
    public int? a; 
    public int c; 
} 

而是創造INT的新實例?類我們應該分配相同的實例。但是鑄造int?到int將是醜陋的使用並導致性能問題。