【发布时间】:2021-03-26 16:25:22
【问题描述】:
在下面的code-sn-p中,是否可以到达if的内部,如果可以,在什么情况下?
MyEnum foo = ...;
if(!Enum.IsDefined(typeof(MyEnum), foo))
{
// reachable?
}
我有一个 WebController,它需要 MyEnum 作为参数。然后,通过给定的检查将此参数提供给服务。现在我想知道这个检查怎么可能是假的,因为foo 需要是来自MyEnum 或ArgumentException 的值(例如,如果用户提供了非法参数)。
代码肯定使用了MyEnum 类型的变量,而不是string 或int。
【问题讨论】:
-
阅读documentation for Enum.IsDefined()。它说:“返回一个布尔值,说明给定的整数值或其字符串名称是否存在于指定的枚举中。”