1

Visual Studioは、「'PhoenixEngineTypes.BehaviorTypes'は'タイプ'ですが、'変数'のように使用されます」と報告します。

public void AddBehavior(BehaviorTypes type)
    {
        if (Enum.IsDefined(BehaviorTypes, type))
        {
        switch (type)
        {
            case BehaviorTypes.render:
            break;   
        }
    }

BehaviorTypesの定義は次のとおりです。

[Flags]
enum BehaviorTypes : uint
{
    default_behavior = 1 >> 0,
    select = 1 >> 1,
    render = 1 >> 2,
    animate = 1 >> 3,
    navigate = 1 >> 4,
    rotate = 1 >> 5,
    group = 1 >> 6,
    scale = 1 >> 7,
    collide = 1 >> 8,
    kill = 1 >> 9,
    attack = 1 >> 10,
    audio = 1 >> 11,
    all = UInt32.MaxValue
}

そして最後に:

public static bool IsDefined(Type enumType, object value);

なぜ私はこれを行うことができないのですか?使っtypeof(type)てみてコンパイルしましたが、型が可変でないのになぜ関数呼び出しを無駄にするのでしょうか?トークンを直接使用することはできませんか?

4

1 に答える 1

1

IsDefined次のように呼び出す必要があります

Enum.IsDefined(typeof(BehaviorTypes), type)

のインスタンスを入力として期待しているためTypeBehaviorTypesはのインスタンスではありませんが、を使用してタイプにType対応するインスタンスを取得できます。Typetypeof

http://msdn.microsoft.com/en-us/library/system.enum.isdefined.aspxを参照してください

于 2012-07-26T21:44:39.147 に答える