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!