我在写一些通用的枚举铸造逻辑,和我遇到一个奇怪的现象附带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)你的意思是它得到了断言? –