我有一个枚举:
public enum MyEnum
{
EnumValue1,
EnumValue2,
}
假设我有一个对象,我想检查它是否是一个 MyEnum 对象,第一行出现编译时错误:
var myEnumValue = enumObject as MyEnum;
if(myEnumValue != null)
{
...
}
但我可以做到以下几点:
var myEnumValue = (MyEnum)enumObject;
(但这可能引发异常)
所以我必须使用:
if(enumObject is MyEnum)
{
//and then assign enumObject to a MyEnum object
}
相反。
问题
为什么这里不允许使用 as
而强制转换或使用 is
是?
最佳答案
您不能将 as
与任何值类型一起使用(nullable types 除外)。
原因是as
关键字在对象不能被转换时返回null
,但是值类型不能是null
。
关于c# - 为什么在检查变量是否为枚举值时不能使用 'as'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19766167/