2016-04-14 79 views
1

想象一下,我有一個結構與9屬性,返回一個值類型作爲其結果,並在該結構中,我也有它返回一個引用類型的屬性:IEnumerable這樣的:這應該是一個結構或更好的類(9值類型的屬性和1參考值)

public IEnumerable<KeyValuePair<String, String>> Dostuff 
     { 
      get 
      { 
       //doing some operations in here 
       return _valueToReturn; 
      } 
     } 

使用IEnumerable需要堆空間,但實際上該結構是基於棧,所以怎麼在我的情況怎麼辦?

順便說一下結構是不可變的。

+2

你不在乎。 CLR爲你處理所有這些東西。 –

+0

http://stackoverflow.com/questions/3942721/structs-versus-classes – HimBromBeere

+0

可能的副本https://msdn.microsoft.com/en-us/library/ms229017(v=vs.110).aspx – Nahum

回答

0

有一個page顯示如何在結構和類之間進行選擇。

據我所知,如果結構中所有字段的總大小小於16字節,那麼將其保留爲結構比將其更改爲類更好。屬性的數量並不重要。

0

在你的情況下,聲明類型爲class

如果您不知道或不確定,請將類型定義爲class

如果類型是原始類型的小聚合,那麼struct可能會提供更好的性能。然而,除非您確定使用class,否則益處比風險小。如果你真的關心性能,那麼你就必須這樣做,然後,你怎麼能確定,試着用代表性的數據來​​衡量性能,在代表性的硬件上,在發佈模式下編譯等等。如果你不想這樣做,請使用class

相關問題