C# 中的可區分聯合
可區分聯合是一種可以儲存多種不同類型值的資料結構。與 C 中的傳統聯合不同,可區分聯合在編譯時強制類型安全。
問題陳述
原始問題提出了一個問題,作者想要創建一個資料結構可以儲存不同類型的值,但具有強制類型檢查。作者嘗試使用自訂 Union 類別實作解決方案,但它缺乏編譯器強制的類型安全性。
解決方案
答案部分中提供的解決方案解決了使用類型安全聯合實作來解決類型安全問題。此實作定義了一個表示可區分聯合的基底類別 Union3,以及表示聯合的不同情況的三個巢狀類別 Case1、Case2 和 Case3。
基底類別的 Match 方法採用三個函數作為參數,每個對應於聯合可以容納的不同類型。當呼叫 Match 時,根據聯合中儲存的值的實際類型執行對應的函數。
實作細節
巢狀類別 Case1、Case2 和Case3用於封裝各自類型的值。基底類別的建構子設為私有,以防止外部類別繼承它。
用法
提供的範例示範如何使用型別安全聯合來儲存不同類型的值,並依照實際類型進行比對。 Match 方法允許型別安全地提取聯合值。
結論
此解決方案提供了 C# 中可區分聯合的類型安全實作。它消除了手動類型檢查的需要,並確保程式碼正確處理聯合中儲存的不同類型。
以上是如何在 C# 中建立類型安全的可區分聯合?的詳細內容。更多資訊請關注PHP中文網其他相關文章!