繁体   English   中英

用Mono进行枚举操作

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM