Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah kita dapat melaksanakan logik yang bergantung kepada jenis dalam C# tanpa ciri 'Switch On Type' langsung?

Bagaimanakah kita dapat melaksanakan logik yang bergantung kepada jenis dalam C# tanpa ciri 'Switch On Type' langsung?

Linda Hamilton
Lepaskan: 2025-01-28 15:16:09
asal
240 orang telah melayarinya

How Can We Implement Type-Dependent Logic in C# Without a Direct

melampaui batasan C#'s' switch on type '

C# tidak secara langsung menyokong pernyataan "Switch On Type". Batasan ini timbul dari kekaburan yang wujud dalam hierarki jenis; Objek berpotensi sepadan dengan pelbagai kes. Walau bagaimanapun, beberapa penyelesaian yang elegan wujud untuk mencapai logik yang bergantung kepada jenis.

memanfaatkan padanan corak (c# 7 dan kemudian)

diperkenalkan dalam C# 7, pemadanan corak menawarkan cara yang ringkas dan mudah dibaca untuk mengendalikan logik berasaskan jenis dalam

pernyataan. Perhatikan contohnya: switch

switch (shape)
{
    case Circle c:
        Console.WriteLine($"Circle with radius {c.Radius}");
        break;
    case Rectangle s when (s.Length == s.Height):
        Console.WriteLine($"{s.Length} x {s.Height} square");
        break;
    case Rectangle r:
        Console.WriteLine($"{r.Length} x {r.Height} rectangle");
        break;
    // ... more cases
}
Salin selepas log masuk
Taipkan Switching berasaskan Nama (C# 6 dan kemudian)

c# 6 dan versi kemudian memberikan pengendali

, membolehkan suis berdasarkan nama jenis:

nameof()

switch (o.GetType().Name)
{
    case nameof(AType):
        // Handle AType
        break;
    case nameof(BType):
        // Handle BType
        break;
}
Salin selepas log masuk
Switching berasaskan rentetan (C# 5 dan lebih awal)

Untuk versi C# yang lebih tua (5 dan ke bawah), suis berasaskan rentetan menggunakan nama jenis diperlukan:

Walaupun kaedah ini secara berkesan meniru "menukar pada jenis," mereka mungkin tidak selalu menawarkan tahap keanggunan atau pemeliharaan yang sama sebagai ciri bahasa yang berdedikasi. Pilihan bergantung pada versi C# dan tahap kejelasan kod yang dikehendaki.
switch (o.GetType().Name)
{
    case "AType":
        // Handle AType
        break;
}
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimanakah kita dapat melaksanakan logik yang bergantung kepada jenis dalam C# tanpa ciri 'Switch On Type' langsung?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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