Rumah >pembangunan bahagian belakang >C++ >Adakah terdapat alternatif yang lebih baik untuk mensimulasikan suis pada jenis C#?

Adakah terdapat alternatif yang lebih baik untuk mensimulasikan suis pada jenis C#?

Barbara Streisand
Barbara Streisandasal
2025-01-28 15:11:13859semak imbas

Are There Better Alternatives to Simulating a Switch on Type in C#?

Adakah terdapat alternatif yang lebih baik untuk bertukar mengikut jenis?

Serpihan kod yang disediakan adalah kaedah biasa yang mensimulasikan penukaran mengikut jenis C#. Walau bagaimanapun, dalam senario yang berbeza, mungkin terdapat beberapa alternatif yang lebih sesuai.

c# 7 dan versi yang lebih tinggi

Dengan pengenalan C# 7, ia boleh dihidupkan untuk merealisasikan jenis sebenar mengikut padanan mod:

c# 6
<code class="language-csharp">switch(shape)
{
    case Circle c:
        WriteLine($"圆形,半径为 {c.Radius}");
        break;
    case Rectangle s when (s.Length == s.Height):
        WriteLine($"{s.Length} x {s.Height} 正方形");
        break;
    case Rectangle r:
        WriteLine($"{r.Length} x {r.Height} 矩形");
        break;
    default:
        WriteLine("<未知形状>");
        break;
    case null:
        throw new ArgumentNullException(nameof(shape));
}</code>

Dalam C# 6, anda boleh menggunakan operator NameOf () dalam pernyataan Switch:

c# 5 dan versi terdahulu

<code class="language-csharp">switch(o.GetType().Name) {
    case nameof(AType):
        break;
    case nameof(BType):
        break;
}</code>

Sebelum C# 5, anda masih boleh mensimulasikan menukar mengikut jenis, tetapi ini memerlukan rentetan yang mengandungi nama jenis:

Alternatif yang dipilih bergantung kepada keperluan khusus aplikasi dan versi C# yang digunakan.

Atas ialah kandungan terperinci Adakah terdapat alternatif yang lebih baik untuk mensimulasikan suis pada jenis C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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