1

プログラムを .net から Mac OS X の Mono に移植しようとしていますが、コンパイル エラーが発生してコンパイルできません。コンパイルするにはどうすればよいですか? Windowsで正常に動作するのはなぜですか?

特にMac OSでは、C#は初めてです。

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# の仕様には、こう書かれています。

列挙値と操作

各列挙型は個別の型を定義します。列挙型と整数型の間、または 2 つの列挙型の間で変換するには、明示的な列挙型変換 (§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 に答える