我在寫一些通用的枚舉鑄造邏輯,和我遇到一個奇怪的現象附帶Enum.ToObject
方法:分配一個InvalidValue以枚舉變量(這是爲什麼不拋出異常?)
[TestClass]
public class UnitTest1
{
public enum FixedSet
{
Value1 = 1,
Value2 = 2,
Value3 = 3
}
[TestMethod]
public void TestMethod1()
{
try
{
var intVal = 123;
FixedSet actual = (FixedSet)Enum.ToObject(typeof(FixedSet), intVal);
Assert.Fail("Thought an exception should have occured");
}catch(Exception e)
{
//should have thrown an exception
}
}
}
```
我希望這會拋出某種異常,因爲123不是給定枚舉類型的值,但是,我可以將它設置爲此FixedSet變量的值。
爲什麼允許這樣做?我一直認爲這會失敗,因爲C#是強類型語言,這是一個強烈的定義枚舉...
不,它不會像這樣工作。 'Enum'是它的基礎類型。 –
複製粘貼代碼,你會看到它失敗。問題是「爲什麼這不會拋出異常」 –
[Define「fail」。](https://dotnetfiddle.net/Xt38n6)你的意思是它得到了斷言? –