1

我正在尝试将程序从 .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 工作室。

4

2 回答 2

1

除了 Mono 是正确的,我无法将其解读为其他任何内容,C# 规范有这样的说法;

枚举值和操作

每个枚举类型定义一个不同的类型;在枚举类型和整数类型之间或两种枚举类型之间进行转换需要显式枚举转换(第 6.2.2 节)

...和...

枚举逻辑运算符

每个枚举类型 E 都隐含地提供了以下预定义的逻辑运算符:

  • E 运算符 &(E x, E y);
  • E 运算符 |(E x, E y);
  • E 运算符 ^(E x, E y);

也就是说,逻辑运算符仅定义为 enum*enum,并且要在带有 enum 的逻辑表达式中使用整数类型,它应该需要显式转换。

于 2013-07-10T16:11:07.050 回答
0

如果它使用 .NET 而不是 Mono 编译,这是一个单声道编译器错误,请在http://bugzilla.xamarin.com/中报告它

于 2013-07-12T13:30:36.067 回答