SORU
25 AĞUSTOS 2010, ÇARŞAMBA


Neden'# kurucu anlaması C tipi mi?

Neden tür kesmesi kurucular için desteklenen genel yöntemler için bu böyledir.

public class MyType<T>
{
   private readonly T field;
   public MyType(T value) { field = value; }
}

var obj = new MyType(42); // why can't type inference work out that I want a MyType<int>?

Bir fabrika sınıfı ile bunu çözmek verebilecek olsa

public class MyTypeFactory
{
   public static MyType<T> Create<T>(T value)
   {
      return new MyType<T>(value);
   }
}
var myObj = MyTypeFactory.Create(42);

Yapıcı tür kesmesi bakamam neden pratik ya da felsefi bir nedeni var mı?

CEVAP
25 AĞUSTOS 2010, ÇARŞAMBA


Yapıcı tür kesmesi bakamam neden felsefi bir nedeni var mı?

Hayır. Varsa

new Foo(bar)

o zaman her türlü kapsamı ne olursa olsun, genel parametre olarak Foo adlı tanımlamak, ve her bir çıkarım algoritması değiştirilmiş yöntem kullanarak aşırı çözümleme yapın edebiliriz. Sonra bir 'betterness' algoritma bu iki geçerli kurucular belirler . oluşturmak zorunda kalırız ^em>ama farklı genel parametre aynı ada sahip iki türbu daha yapıcı. Genel olmayan bir tip-doktora, her zaman kazanmalıdır geriye doğru uyumluluk sağlamak için.

Yapıcı tür kesmesi bakamam neden pratik bir nedeni var mı?

Evet. Eğer bu özellik yarar -- önemli olan maliyetleri -- ağır basıyor bile bir özelliği hayata sahip olmak için yeterli değil. Sadece bu özelliği net bir galibiyet olmalı, bir olmalıbüyüknet yatırım olabiliriz diğer tüm olası özelliklerine göre kazanmak. Ayrıca harcama o zaman daha iyi olmak ve çaba sarf edebiliriz hata düzeltme, performans çalışması ve olası diğer alanlarda çaba var. Ve ideal olarak "tema" serbest. ne olursa olsun iyi bir uyum var

Ayrıca size doğru not olarak, aslında kendisi özelliği, fabrika desen kullanarak olmadan bu özellik yararları alabilirsiniz. Kolay çözümler varlığını bir özelliği daha hayata geçirilecek daha az Olası hale getirir.

Bu özelliği uzun bir süre için olası özellikler listesi üzerinde olmuştur. Asla yakınından listede gerçekten yürütülmesi için yeterince yüksek oldu.

Mart 2015 GÜNCELLEŞTİRİN

Önerilen özellik C# 6 belirtilen ve tasarlanmış olması için listenin en üstüne yakın bir şekilde yeterli, ama sonra kesildi.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Absolute Zero(Programming Tutorials)

    Absolute Zer

    22 Kasım 2012
  • EvilControllers

    EvilControll

    20 Ocak 2008
  • Phandroid

    Phandroid

    26 Ocak 2009