我正在研究一個Web服務方法,它將接收一個int數組作爲參數,然後在方法內部,我將數組中的值轉換爲枚舉值,並將它們存儲在一個枚舉列表。但是,如果傳入的值不在枚舉中,則將其添加到枚舉列表中而不會出現問題。沒有InvalidCastException
,沒什麼。我做了一個試驗項目,看起來像這樣:C#枚舉數組接受一個錯誤的值
static class Program
{
static void Main(string[] args)
{
List<TestValues> values = new List<TestValues>() {
TestValues.Value1,
TestValues.Value2,
(TestValues)15
};
foreach (var val in values)
Console.WriteLine(val);
Console.Read();
}
enum TestValues
{
Value1 = 2,
Value2 = 4,
Value3 = 8
}
}
當我運行它時,輸出爲:
Value1
Value2
15
對於我的web服務,我將實現一個驗證,所以這不會hapen在所有。但是......這很奇怪!運行時不應該拋出一個InvalidCastException
或ArgumentOutOfRangeException
或類似的東西?由於我得到了枚舉列表(而不是int值),我希望值限制爲enum的值(這是枚舉的用途)。
我錯過了什麼嗎?這是一個.NET錯誤,C#錯誤還是有我不知道與枚舉?
+1混日子的問題 – Tigran
閱讀本之一: [爲什麼鑄造INT無效的枚舉值不拋出異常?] [1] [1]:http://stackoverflow.com/問題/ 6413804/why-does-casting-int-to-invalid-enum-value-not-throw-exception – vinayvasyani