Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah saya dapat mensimulasikan pelbagai warisan dalam C#?

Bagaimanakah saya dapat mensimulasikan pelbagai warisan dalam C#?

Susan Sarandon
Lepaskan: 2025-01-29 20:43:10
asal
434 orang telah melayarinya

How Can I Effectively Simulate Multiple Inheritance in C#?

multi -inherition dalam c#: kaedah praktikal

Oleh kerana kerumitan kod berpotensi, C# sendiri tidak menyokong pelbagai warisan (warisan kelas adalah dari pelbagai kelas asas). Walau bagaimanapun, terdapat beberapa kaedah alternatif yang dapat melaksanakan fungsi yang sama dengan berkesan.

warisan

Daripada mensimulasikan pelbagai warisan, lebih baik untuk mempertimbangkan menggunakan gabungan. Tentukan antara muka yang mewakili atribut dan tingkah laku yang diperlukan, dan kemudian gunakan kelas gabungan antara muka ini. Sebagai contoh, antara muka , dan antara muka

boleh mewakili harta

. ISteerable SteeringWheel kaedah lanjutan IBrakable BrakePedal

C# 3.0 memperkenalkan kaedah lanjutan yang membolehkan anda mengembangkan kelas tanpa mengubah suai kod sumber. Menggunakan kaedah pengembangan, anda boleh memudahkan operasi kaedah panggilan atribut gabungan. Sebagai contoh, anda boleh membuat kaedah pengembangan untuk dan

untuk menyediakan kaedah seperti dan , seperti yang ditunjukkan dalam contoh kod berikut:

Contoh praktikal ISteerable IBrakable SteerLeft() Memandangkan klien TCP berasaskan teks yang sedia ada (itexttcpClient) digunakan dalam Windows Windows. Terdapat dua kaedah biasa: Stop()

Buat kelas baru yang mewarisi dari
<code class="language-csharp">public interface ISteerable { SteeringWheel wheel { get; set; } }

public interface IBrakable { BrakePedal brake { get; set; } }

public class Vehicle : ISteerable, IBrakable
{
    public SteeringWheel wheel { get; set; }

    public BrakePedal brake { get; set; }

    public Vehicle() { wheel = new SteeringWheel(); brake = new BrakePedal(); }
}

public static class SteeringExtensions
{
    public static void SteerLeft(this ISteerable vehicle)
    {
        vehicle.wheel.SteerLeft();
    }
}

public static class BrakeExtensions
{
    public static void Stop(this IBrakable vehicle)
    {
        vehicle.brake.ApplyUntilStop();
    }
}


public class Main
{
    Vehicle myCar = new Vehicle();

    public void Main() // 注意这里将main改为了Main
    {
        myCar.SteerLeft();
        myCar.Stop();
    }
}</code>
Salin selepas log masuk
dan contoh kelas klien untuk mencapai

. mewarisi dan mencapai

(tidak disyorkan) dalam beberapa cara.

    Kedua -dua kaedah ini perlu dikendalikan untuk setiap kaedah. Walau bagaimanapun, menggunakan kaedah kombinasi dan lanjutan boleh menggabungkan kedua -dua antara muka ke dalam satu kelas untuk mengelakkan konflik dan memudahkan penyelenggaraan:
  1. Component ITextTcpClient Dengan menggunakan mod Warisan dan Kaedah Lanjutan Gabungan, anda dapat mensimulasikan Warisan Berbilang dalam C# sambil mengekalkan kesederhanaan dan kebolehbacaan kod.

Atas ialah kandungan terperinci Bagaimanakah saya dapat mensimulasikan pelbagai warisan dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan