Rumah >pembangunan bahagian belakang >C++ >Bolehkah kaedah lanjutan memanjangkan kelas statik di C#?
c# kaedah lanjutan: bolehkah mereka melanjutkan kelas statik?
Kaedah lanjutan dalam C# menawarkan cara yang kuat untuk menambah fungsi ke kelas sedia ada tanpa mengubah kod sumber mereka. Walau bagaimanapun, persoalan yang sama adalah sama ada keupayaan ini meluas ke kelas statik.Jawapan ringkas ialah: Tidak, anda tidak boleh melanjutkan kelas statik secara langsung dengan kaedah lanjutan. Kaedah lanjutan beroperasi pada anggota contoh (ahli bukan statik), yang kelas statik secara semulajadi kekurangan. Percubaan untuk menentukan kaedah lanjutan untuk kelas statik akan mengakibatkan ralat pengkompil.
penyelesaian: Menggunakan kelas pembalut
Walaupun lanjutan langsung adalah mustahil, penyelesaian praktikal melibatkan mewujudkan kelas pembalut statik. Kelas pembalut ini merangkumi kelas statik, yang membolehkan anda menambah kaedah lanjutan kepada pembalut. Ini menyediakan keupayaan akses dan lanjutan tidak langsung.mari kita menggambarkan dengan contoh. Katakan kami ingin menambah kaedah
ke kelas WriteColoredLine()
untuk memudahkan output berwarna: Console
<code class="language-csharp">public static class ConsoleWrapper { public static void WriteColoredLine(this Console console, string text, ConsoleColor color) { console.ForegroundColor = color; console.WriteLine(text); console.ResetColor(); } }</code>Sekarang, kita boleh menggunakan kaedah lanjutan ini:
<code class="language-csharp">ConsoleWrapper.WriteColoredLine(Console, "This text is red!", ConsoleColor.Red);</code>Pendekatan ini dengan berkesan menambah fungsi yang dikehendaki tanpa mengubah kelas
asal. Sintaks Console
dalam tandatangan kaedah lanjutan membolehkan kita memanggilnya seolah -olah ia adalah ahli kelas this Console console
itu sendiri, walaupun ia sebenarnya merupakan kaedah Console
. Perhatikan bahawa kami secara eksplisit lulus objek ConsoleWrapper
ke kaedah. Ini adalah perbezaan utama dari memperluaskan kelas contoh. Console
Atas ialah kandungan terperinci Bolehkah kaedah lanjutan memanjangkan kelas statik di C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!