我有以下代码:
public enum rkError : int {EC_SUCCESS,
EC_INVALID_FILE,
EC_UNDEFINED_HEADER,
EC_FILE_NOT_FOUND,
EC_CANNOT_CREATE};
......然后,后者:
int ok;
.
.
.
ok = hdr.Load();
if(ok!=rkError.EC_SUCCESS) return ok;
.
.
.
...据我所知, ok 和 rkError.EC_SUCCESS 都是 int ,但编译器投诉:
错误CS0019:运算符'!='无法应用于'int'和'test.rkError'类型的操作数
所以为了运行我的程序,我必须像这样更改if行:
if(ok!=(int) rkError.EC_SUCCESS) return ok;
我不明白为什么会发生这种情况,因为我负责明确将rkError定义为 int 。
我使用的是MonoDevelop而不是Visual Studio。这是正常的吗?我做错了什么?
答案 0 :(得分:4)
rkError
不是int
。这是由int
支持的枚举。那不一样。
是的,您必须将枚举值转换为基础原始类型,以将其与另一个原始值进行比较。