C#, statik üyelere 'örnek üyelermiş gibi' erişmenize izin vermediğine sevindim. o Eğer türetilmiş türleri 'üzerinden' statik üyeleri erişmesine izin yapar Öte yandanKalıtsal üyelere "yoluyla" miras alınan türlere erişmek neden yararlıdır?
Thread t = new Thread(..);
t.sleep(..); //Probably doesn't do what the programmer intended.
: Bu Java yaygın hata önler. Operatörler dışında (sizi yazım dosyalarından kurtarır), bunun gerçekten yararlı olduğu durumlar hakkında hiçbir fikrini düşünemiyorum. Aslında, bu aktif gibi hatalar teşvik:
// Nasty surprises ahead - won't throw; does something unintended:
// Creates a HttpWebRequest instead.
var ftpRequest = FtpWebRequest.Create(@"http://www.stackoverflow.com");
// Something seriously wrong here.
var areRefEqual = Dictionary<string, int>.ReferenceEquals(dict1, dict2);
Şahsen ben bilmediğiniz API'leri (ı ifade ağaçları ile kapalı başlayarak hatırlıyorum Yolumu arıyorum ne zaman tekrar tekrar benzer hataları işlemekle tutmak
; editör BinaryExpression.
vurmak ve neden IntelliSense'in bana bir seçenek olarak MakeUnary
teklif ettiğini merak ediyordum. Benim (miyop) Sizce
bu özellik:
- ayrıntı azaltmaz mı; Programcı, bir tür adı veya başka bir yol belirtmelidir (geçerli türün devralınan statik üyelerine erişirken, operatörler ve durumlar hariç).
- Yukarıdaki gibi hata/yanıltıcı kodları teşvik eder.
- Programlayıcıya, C# 'daki statik yöntemlerin, kullanmadıklarında bir çeşit' polimorfizm 'sergilediğini önerir.
- (Minör) Yeniden silmede olasılıkla kasıtsız olarak yeniden ortaya çıkma olasılıklarını 'sessiz' olarak verir.
(IMO, operatörler kendi tartışma garanti özel bir durum vardır.)
C# normalde dil bir "başarı çukur" olduğunu göz önüne alındığında, neden bu özellik vardır? Avantajlarını (IDE'de her zaman çözülebilen 'keşfedilebilirlik' dışında) göremiyorum, ancak birçok sorun görüyorum.
Veya daha kötüsü, 'UTF8Encoding.ASCII'. – SLaks
Biraz yanıltıcı olabileceğini kabul ediyorum, ancak * kalıtsal üyelerin türetilmiş tip * üyeleri olarak ele alındığı ilkesiyle tutarlıdır.Açıkçası, bu kalıbın kısıtlı tip parametrelerine izin vermediğini, çünkü gerçekten potansiyel olarak oldukça yanıltıcı olduğunu unutmayın. Ayrıntılar için http://blogs.msdn.com/b/ericlippert/archive/2007/06/14/calling-static-methods-on-type-parameters-is-illegal-part-one.aspx adresine bakın. –