簡體   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