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

  • AyfionGaming

    AyfionGaming

    20 ŞUBAT 2013
  • Dan Gately

    Dan Gately

    13 AĞUSTOS 2006
  • How It Should Have Ended

    How It Shoul

    5 Mart 2007