[英]Enum bit operations with Mono
我正在尝试将程序从.net移植到Mac OS X上的Mono中,但是在遇到编译错误时无法对其进行编译。 我应该怎么做才能编译它? 为什么在Windows上可以正常工作?
我是C#的新手,尤其是在Mac OS上。
namespace my-project
{
using System;
[Flags]
public enum MyEnum : uint
{
F_FLAG_1 = 0x00004,
F_FLAG_2 = 0x00008
}
}
代码行出现错误:
if ((this.MyEnumField & num) != 0)
编译错误消息:
Error CS0019: Operator `&' cannot be applied to operands of type `MyEnum' and `uint' (CS0019) (my-project)
我正在使用Xamarin工作室。
我不能读它,除了Mono在右边,C#规范是这样说的。
枚举值和运算
每个枚举类型定义一个不同的类型。 要在枚举类型和整数类型之间或两个枚举类型之间进行转换,需要显式的枚举转换(第6.2.2节)
...和...
枚举逻辑运算符
每个枚举类型E隐式提供以下预定义的逻辑运算符:
- E运算符&(E x,E y);
- E运算符|(E x,E y);
- E运算符^(E x,E y);
也就是说,逻辑运算符仅被定义为enum * enum,并且要在具有枚举的逻辑表达式中使用整数类型, 应要求进行显式转换。
如果它使用.NET而不是Mono进行编译,则是Mono编译器错误,请在http://bugzilla.xamarin.com/中进行报告。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.