在C#中實現高級基於類型的控制流
C#以其多功能性而聞名,但無法根據類型進行切換一直是一個顯著的局限性。然而,隨著較新語言版本的出現,已經出現了許多替代方法來規避此限制。
C# 7中的模式匹配
C# 7引入了模式匹配,這是一種優雅的機制,允許直接根據類型進行切換。考慮以下示例:
<code class="language-csharp">switch (shape) { case Circle c: WriteLine($"圆形,半径为 {c.Radius}"); break; // ... }</code>
模式匹配提供了一種簡潔且類型安全的方法來在一個switch語句中處理不同的類型,從而提高了代碼的可讀性,並促進了更有效的特定類型操作。
C# 6中的nameof()運算符
對於C# 6用戶,nameof()運算符提供了一種替代解決方案。通過將類型名稱作為字符串作為目標,您可以構建如下所示的switch語句:
<code class="language-csharp">switch (o.GetType().Name) { case nameof(AType): break; // ... }</code>
雖然不如模式匹配那樣通用,但這種方法為C# 6及更早版本中區分類型提供了一種可靠的方法。
C# 5及更早版本中使用類型名稱的switch語句
對於使用C# 5及以下版本的用戶,使用硬編碼類型名稱字符串的基本switch語句仍然是一種可行的方法,儘管靈活性較低:
<code class="language-csharp">switch (o.GetType().Name) { case "AType": break; // ... }</code>
雖然它缺乏其較新對應物的複雜性,但這種方法仍然可以滿足在早期版本的C#中進行簡單的基於類型的決策的需求。
以上是如何在C#中獲得基於類型的控制流?的詳細內容。更多資訊請關注PHP中文網其他相關文章!