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