SORU
1 HAZİRAN 2011, ÇARŞAMBA


Neden böyle bir yapı olarak uygulanır?

Sistem İçinde.Veri.Seri, EntitySet<T> böyle ItemList<T> yapılar birkaç kullanır:

 internal struct ItemList<T> where T : class
  {
    private T[] items;
    private int count;
    ...(methods)...
  }

(Bu keşfetmek için daha götürdü - EntitySet<T> varlıklar alanını atarak ne kadar önemli olduğunu anlayamadı başvuru istisnalar boş!)

Benim sorum bir sınıf üzerinde bir yapı olarak bu uygulama ne demektir?

CEVAP
1 HAZİRAN 2011, ÇARŞAMBA


ItemList<T> saklamak istediğiniz varsayalım, bir dizi sağlar.

Değer türleri bir dizi (struct) tahsis dizi içindeki verileri saklar. Öte yandan ItemList<T> başvuru türü (class) ItemList<T> nesnelere başvurular sadece dizi içinde saklanır. Aslında ItemList<T> nesneleri yığında ayrılmış olurdu. Yönlendirme fazladan bir düzeyi sadece bir dizi daha verimli bir değer türü kullanmaktır uzunluğu ile kombine olarak ItemList<T> örneği erişmek için gerekli.

Struct vs class

EntitySet<T> kodu inceledikten sonra hiçbir diziye dahil olduğunu görüyorum. Ancak, EntitySet<T> hala ItemList<T> iki örneği içerir. ItemList<T> struct bu örnekleri için depolama EntitySet<T> nesnenin içinde ayrılır. class EntitySet<T> referanslar EntitySet<T> işaret içeriyordu yerine kullanılan nesneler ayrı olarak ayrılmış.

Performans farkı arasında kullanan biri veya diğeri olmayabilir fark çoğu durumda ama belki de geliştirici karar istediği için tedavi dizisi ile sıkı eşleşmiş sayısı olarak bir tek değer çünkü sanki en iyi şey.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Just So

    Just So

    3 HAZİRAN 2007
  • o0oCyrusViruso0o

    o0oCyrusViru

    11 Mart 2008
  • whiteboy7thst

    whiteboy7ths

    1 Temmuz 2009