SORU
19 ŞUBAT 2012, Pazar


C tipi bir parametre, değer türü için kısıtlı# varyans açıklama

C mümkündür# tür parametre için varyans açıklama eklemek için, değer türü için kısıtlı:

interface IFoo<in T> where T : struct
{
  void Boo(T x);
}

Neden bu varyans açıklama böyle bir durumda tamamen hiçbir mantıklı eğer derleyici tarafından izin verilir?

CEVAP
20 ŞUBAT 2012, PAZARTESİ


Neden bu varyans beri derleyici tarafından izin verilir açıklama böyle bir durumda tamamen anlamsız?

Derleyici tarafından hiç birisi varyans# 4.0 C derleyici için kurallar eklediğim zaman bunu deneyebilir kabul İzin Verilmiyor.

Derleyici uyarı ve hatalar vardırözellikleribir özelliği uygulanacak, çıplak en azından, olması için , veDüşünce Sen önce bir noktada gemi derleyici. Bunu yapmak için başarısız oldu, ve bu nedenle böyle bir durum için bir uyarı olmalı olup olmadığını bile tartışma fırsatı buldu.

Benim dikkatimi çekti ama şimdi, soru şu:gerekirbir özelliği yok. Derleyici bir uyarı (veya hata) bu dava için üretmek gerekir?

Bu kararı vermek sana kalmış. Kabul ediyorum bir kaç şey vardır:

  • Kodu böyle şeyleri düşünen birileri yazın belki bu mantıklı bir şey olur mu? Bir umut değil; bir tür sistem arayüzü bir varyant yapmak hakkında yeterli kim bilir geliştirici de referans tipleri farkı sadece ne yaptıklarını çok iyi biliyor umuyor. Ama belki işe yarar olduğunu düşünerek bu tür olabilir orada geliştiriciler vardır. Olasılık en azından ötesinde görünmüyor. Açıkça yapmacık değil.

  • Kodaçıkça yanlış? Evet, muhtemelen öyledir. Birisi kasten varyant görünen bir arayüz yazmak istiyor ama aslında değil, çok zor görünüyor.

Ve benzeri.

Bunu daha fazla düşünmem gerekecek, ama ilk bakışta bu aslında derleyici eklemek için iyi bir uyarı olabilir gibi görünüyor. Bu takım ile konuşacağım ve Roslyn sürümü ekleyerek dikkate alacağız.

Fikir için teşekkürler!

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • brokenbellsVEVO

    brokenbellsV

    11 EYLÜL 2009
  • Fuse

    Fuse

    21 Kasım 2005
  • SDSARG3

    SDSARG3

    14 Mart 2009