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

  • Jimmie Jones

    Jimmie Jones

    16 Kasım 2007
  • Jorrit Jongma

    Jorrit Jongm

    17 Ocak 2008
  • SavageLuxxxGaming - Daily NBA 2K15 & NBA Live 15 Enjoy And Subscribe!

    SavageLuxxxG

    11 Ocak 2013