首頁 > 後端開發 > C++ > 為什麼在 C# 中將無效整數轉換為枚舉不會引發異常?

為什麼在 C# 中將無效整數轉換為枚舉不會引發異常?

DDD
發布: 2025-01-03 01:10:39
原創
433 人瀏覽過

Why Doesn't Casting an Invalid Integer to an Enum in C# Throw an Exception?

為什麼將Int 轉換為無效的枚舉值不會拋出異常

在C# 中,枚舉本質上是映射一群組命名值的數字類型為整數常數。枚舉的一個有趣的方面是它們能夠接受任何整數值,包括超出其定義範圍的值。

當您遇到以下枚舉時:

enum Beer
{
    Bud = 10,
    Stella = 20,
    Unknown
}
登入後複製

您可能會期望進行強制轉換非 10、20 或 Beer 類型未知的整數將引發異常。然而,事實並非如此。將無效整數轉換為 Beer 類型會導致將該整數值指派給枚舉變數。

考慮以下程式碼:

int i = 50;
var b = (Beer) i;

Console.WriteLine(b.ToString());
登入後複製

執行此程式碼時,它會輸出「 50" 到控制台。 b 變數被賦予整數值 50,這對 Beer 來說不是有效的枚舉值。但是,轉換不會引發異常。

此行為源自於 .NET Framework 創建者所做的設計決策。枚舉由其他值類型支持,例如 int、short 或 byte。因此,它們可以接受對這些基礎值類型有效的任何值。

雖然此行為在某些情況下很方便,但如果您沒有意識到,它也可能會導致意外結果。

超越預設行為

對於需要更嚴格執行枚舉值的情況,有實用程式和您可以使用擴充功能來驗證和強制僅使用定義的枚舉值。這些工具可以幫助您避免潛在的錯誤並確保您的枚舉變數僅包含預期的值。

以上是為什麼在 C# 中將無效整數轉換為枚舉不會引發異常?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板