2016-04-14 12 views
1

Imagine 9 özellikleri ile bir yapıya sahip olduğumu düşünün. bir referans tipi döndüren bir özelliği: böyle IEnumerable:Bu bir strüktür ya da daha iyi bir sınıf olmalı mı (9 değer türü özellikleri ve 1 referans değeri)

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

yığın alanı gerektirecektir IEnumerable kullanarak, ama aslında yapı yığını dayanmaktadır, bu nedenle benim durumumda ne yapmalı? Bu arada yapının değişmez olduğu belirtilmektedir.

+2

Sen umursamıyorsun. CLR tüm bu şeyleri senin için halleder. –

+0

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

+0

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

cevap

0

Yapı ve sınıf arasında seçim yapmayı gösteren page var.

Yapıdaki tüm alanlarının alanlarının toplam boyutunun 16 bayttan az olması durumunda, bunu yapı olarak tutmak, onu sınıf olarak değiştirmekten daha iyidir. Özelliklerin sayısı önemli değil.

0

Durumunuzda, türü class olarak bildirin.

Eğer bilmiyorsanız veya emin değilseniz, türü class olarak tanımlayın.

Tür, ilkel türlerin küçük bir toplamıysa, struct, daha iyi bir performans sunabilir. Bununla birlikte, faydalar class kullanımından emin olmadığınız sürece risklerden daha küçüktür.

Öyleyse, nasıl emin olabilirsiniz, deneyin ve temsili verilerle, temsili donanımlarda, sürüm modunda derlenmiş vb. Ile performansı ölçün. Performansı gerçekten önemsiyorsanız, yine de bunu yapmanız gerekir.

Bunu yapmak istemiyorsanız, bir class kullanın.

İlgili konular