C # 'da, tüm bu sihirli yöntemlerin bir arayüz tarafından yedeklenmeden ortaya çıktığını görmeye başladım. Bu neden seçildi?
Açıklamama izin ver.
Daha önce C # 'da, bir nesne IEnumerablearayüzü uyguladıysa, otomatik olarak bir foreachdöngü tarafından tekrarlanabilirdi. Bu benim için bir anlam ifade ediyor, çünkü bir arayüz tarafından destekleniyor ve eğer Iteratoryinelenen sınıfın içinde kendi işlevime sahip olsaydım, sihirli bir şekilde başka bir şey anlamına geleceğinden endişe etmeden yapabilirdim.
Şimdi, görünüşe göre, (ne zaman emin değilim), bu arayüzler artık gerekli değildir. Sadece doğru adlandırma dönüşümlerine sahip olması gerekir.
Başka bir örnek, tam olarak GetAwaiter birkaç spesifik özelliğe sahip bir yönteme sahip olarak herhangi bir nesneyi beklenebilir hale getirmektir .
Neden bu "sihir" i statik olarak destekledikleri IEnumerableveya destekleyecekleri gibi bir arayüz INotifyPropertyChangedoluşturmuyorsunuz?
Burada ne demek istediğim hakkında daha fazla bilgi:
http://blog.nem.ec/2014/01/01/magic-methods-c-sharp/
Sihirli yöntemlerin artıları ve eksileri nelerdir ve bu kararların neden verildiği hakkında herhangi bir şey bulabileceğim çevrimiçi herhangi bir yer var mı?
async/ için bir arabirime ihtiyacınız varsa await, bu yalnızca .NET 4.5 uygulanabilir bir hedef olacak kadar geniş bir alana yayıldıktan sonra yazılan kodla çalışacaktır ... temel olarak şu anda. Ancak yöntem çağrılarına tamamen sözdizimsel bir çeviri await, gerçeklerden sonra mevcut türlere işlevsellik eklememe izin veriyor .
foreachbaşlangıçta bir döngü için temel işlev olarak uygulandı . Orada asla nesne uygulamak için bir gereklilik olmuştur IEnumerableiçin foreachişe. Bunu yapmak sadece kongre oldu.