SORU
21 Mayıs 2014, ÇARŞAMBA


Neden yok C# derleyici boş çeteleler izin?

Ben yanlışlıkla hayır değerleri içeren bir numaralandırma bugün tanımlanmış. Örneğin: bunun gibi

public enum MyConfusingEnum{}

Derleyici bana bunu tanımlamak ve kod başarılı bir şekilde inşa izin için oldukça mutlu oldu.

Şimdi ben açıkçası kodu,.. beri geleneksel anlamda kullanamazsın

var mySadCompiler = MyConfusingEnum;

bir değer belirtmeyen ama ilginçtir ki benoldu,.. söylemek mümkün

var myRoundTheHousesZeroState = Activator.CreateInstance<MyConfusingEnum>();

ima ettiğim gibi, bir değer ile MyConfusingEnum tip 0;

Benim sorum neden derleyici boş bir tanım izin vermiyor ve yararlı olabilecek yerde, herhangi bir senaryo var mı?

CEVAP
22 Mayıs 2014, PERŞEMBE


Öncelikle, böyle bir şey yapmış olabilirçokdaha kolay:

MyConfusingEnum x1 = 0;
MyConfusingEnum x2 = default(MyConfusingEnum);
MyConfusingEnum x3 = new MyConfusingEnum();
MyConfusingEnum x4 = (MyConfusingEnum) 123;

yukarıdaki tüm ince iş. (İlk çalışan şaşırmayın; ayrıntılar için örtük numaralandırma dönüşüm üzerine şartname bölümünde görebilirsiniz.)

Benim sorum neden derleyici boş bir tanım izin vermiyor

Sorunuza soruyla cevap başlamak istiyorum. Ayrıca derleyici reddetmek zorunda mısın?

class C {}
interface I {}
struct S {}

Neden ya da neden değil?

Daha doğrudan sorunun cevabı değil: "neden dünyayı olduğundan daha farklı değildir" sorulara cevap vermek zor. İmkansız soru, cevap vereceğim, cevap yerine soru "bir hata tasarım ekibi için meydan olmuştu boş çeteleler yapma; bu ses nasıl cevap verirdi?" diyelim Bu soru halakarşı olgusalama en azından cevap verebilirim.

O zaman soru şu olsun olurmaliyetözelliği kendi tarafından haklıfaydaları.

Bir dil çalışması için bir özellik, düşünce, tasarlanan, implemeted, test edilmiş ve müşterilere sevk belirtilmelidir. Bu "bir hata üretmek gerekir belgelere hata iletisi ve bazı düzine dillere yazılı tercüme edilebilir" özelliği. Birçok insan beni özelliğini tekrarlanmayacağını çevirmek uygulamak için alınan olurdu beş dakika çok para değil.

Ancak, aslında uygun maliyet değildir.fırsat maliyetiilgili maliyet. Bütçeler sınırlı, özellikler değil, özgür, ve bu nedenle herhangi bir özelliği uygulanır anlamına gelir başka bir özellik kesilmesi gerek; hangi özelliğin C# ister olması, bir kesim için bu özelliği?kaybettiyarardeğildaha iyi bir makale yapmak için güçlü olmakfırsat maliyeti.

Önerilen özelliği olduğunu da unutmayınherkes için bariz bir yararı sıfırtasarım Komitesi için zor yapar., Eğer öyleyse belki de görüşmüyorum zorlayıcı bir yararı yoktur;, ne oldu?

yararlı olabilir nerede herhangi bir senaryo var mı?

Akla gelmiyor ama. "Açıkçası yararlı olmayan reddeden programları" C tasarım bir hedef değildir#.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Jonathan Leack

    Jonathan Lea

    26 ŞUBAT 2007
  • RomanAtwood

    RomanAtwood

    18 Kasım 2009
  • tunez4you

    tunez4you

    20 EKİM 2008