我正在尝试将程序从.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工作室。
答案 0 :(得分:1)
我不能把它看作是Mono在右边的其他东西,C#规范有这个说法;
枚举值和操作
每个枚举类型定义一个不同的类型; 在枚举类型和整数类型之间或两个枚举类型之间进行转换需要显式枚举转换(第6.2.2节)
...和...
枚举逻辑运算符
每个枚举类型E都隐式提供以下预定义逻辑运算符:
- E operator&(E x,E y);
- E operator |(E x,E y);
- E operator ^(E x,E y);
也就是说,逻辑运算符只定义了enum * enum,并且要在带有枚举的逻辑表达式中使用整数类型, 需要显式转换。
答案 1 :(得分:0)
如果它使用.NET而不是Mono编译,那么它是单声道编译器错误,请在http://bugzilla.xamarin.com/中报告