C# derleyici uzantı yöntemlerini nasıl uygular?Uzantı yöntemleri nasıl derlenir?
cevap
süreç aynen aşırı yük çözünürlüğü aynıdır: tüm fonksiyonlar "Func" adlı
Func(myObject);
derleyici kontrolleri ve tabana upcasting, Parametrelere (muhtemelen dönüşümleri kullanarak myObject statik tip eşleştirmeye çalışır sınıf). Başarılı olursa, uygun işlevi çağırır. Eğer "normal bir şekilde" uzantıları yöntemlerini çağırabilir fark ederse
, o zaman temizler:
(burada string) Verilen türü içinstatic class MyExtensions
{
public static void MyFunc(this string arg)
{
// ...
}
}
string a = "aa";
MyExtensions.MyFunc(a); // OK
a.MyFunc(); // same as above, but nicer
, derleyici sadece tüm statik fonksiyonlar arar "Bu" değiştirici ilk argüman üzerinde ve soldaki statik tipini eşleştirmeye çalışır. işlev parametresi türü ile (bu örnekte "a"). Bir sınıfın
Örnek yöntemleri gizli bir argüman var. Bir örnek: gizli argüman sen bu kullanabilirsiniz nedenidir
static void Foo(Example this, int arg) {}
O: JIT derleyicisi onunla bitince
class Example {
public void Foo(int arg) {}
}
aslında şöyle
, C# sözdizimi geri dönüştürülür bir örnek yöntem. JIT derleyicisi Foo yöntemini çağırmak sağlayan nesne başvurusu geçmesine argüman çözmek için kullanılır.Anlayacağınız gibi, şimdi bir uzantısı yöntemine bir çok kısa hop.
derleyici ilk fonksiyonunun imza uyan bir işlev için temel sınıf bakar. Eğer onu bulamazsa bir uzantı arar. Uzatma temel sınıf yöntemine göre bir temel sınıf yöntemiyle aynı imza sahipse yerine adlandırılır. Bu yardımcı olabilir: Extension Methods
- 1. Bir yapıda uzantı yöntemleri
- 2. Resmi LINQ Uzantı Yöntemleri
- 3. Typescript (sistem) uzantı yöntemleri (sistem)
- 4. .NET'te uzantı yöntemleri nasıl "geçersiz kılınır"?
- 5. Farklı çerçevelerden uzantı yöntemleri için isim çarpışmaları
- 6. Uzantı yöntemleri, statik sınıflardaki yöntemler ve Roslyn
- 7. RichTextBox BeginUpdate() EndUpdate() Uzantı Yöntemleri Çalışmıyor
- 8. IObservable <> eksik .Subscribe uzantı yöntemleri
- 9. Hiç özel uzantı yöntemleri kullandınız mı?
- 10. PowerShell, Uzantı Yöntemleri ve Maymun Yaması
- 11. Stdin'den kod nasıl derlenir?
- 12. Tarayıcıda TypeScript nasıl derlenir?
- 13. Dinamik şablonu açısaldan nasıl derlenir?
- 14. Kotlin uzantısı yöntemleri nasıl düzenlenir
- 15. Bir projenin hangi katmanında ortak uzantı yöntemleri bulunur?
- 16. Google Courgette aracı nasıl derlenir?
- 17. Bir macda C++ nasıl derlenir?
- 18. qt5 için LibQxt nasıl derlenir?
- 19. ndk uygulaması nasıl oluşturulur/derlenir?
- 20. Bir Android SDK nasıl derlenir
- 21. Jsx Sublime içinde nasıl derlenir?
- 22. .exe nasıl derlenir ve oluşturulur?
- 23. C99 nasıl kullanılır ve derlenir?
- 24. Vim'de nasıl derlenir ve yürütülür?
- 25. g ++ python.h ile nasıl derlenir
- 26. Linq Yöntemleri
- 27. Nasıl bir uzantı var
- 28. Roslyn'de uzatma yöntemleri nasıl edinilir?
- 29. Dinamik türden bir uzantı yöntemi nasıl aranır?
- 30. özel uzantı