Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah kita dapat melaksanakan logik yang bergantung kepada jenis dalam C# tanpa ciri 'Switch On Type' langsung?
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
<code class="language-csharp">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 }</code>Taipkan Switching berasaskan Nama (C# 6 dan kemudian)
c# 6 dan versi kemudian memberikan pengendali
, membolehkan suis berdasarkan nama jenis:
nameof()
<code class="language-csharp">switch (o.GetType().Name) { case nameof(AType): // Handle AType break; case nameof(BType): // Handle BType break; }</code>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.
<code class="language-csharp">switch (o.GetType().Name) { case "AType": // Handle AType break; }</code>
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!