あなたはif (car == house)
でそれらを直接比較することができ、あなたが
Car car = Car.Window;
House house = House.Window;
でそれらのインスタンスを持っているのは、次の2つのenum
enum Car { Window, Door, Light, Gate, Bath }
enum House { Window, Door, Light, Bath, Gate }
があるとしましょうか?
NO
あなたはif ((int)car == (int)house)
でそれらの値を比較することはできますか?
はいです。これはあなたがやろうとしているようです。
例1:
if ((int)car == (int)house)
Debug.Log("Car Value matches House value");
else
Debug.Log("Car Value DOES NOT match House value");
出力:
カーバリューザ・両方の共有列挙House
から列挙し、Window
Car
からWindow
ための家の値
と一致します同じEnum値インデックス0
です。
例2:
Car car = Car.Light;
House house = House.Light;
if ((int)car == (int)house)
Debug.Log("Car Value matches House value");
else
Debug.Log("Car Value DOES NOT match House value");
出力:
カーバリューLight
のでハウス値
は再び、それは両方の共有列挙House
から列挙し、Light
Car
からだ一致し
同じ列挙型vアリューインデックスは
2
です。
例3:
Car car = Car.Gate;
House house = House.Gate;
if ((int)car == (int)house)
Debug.Log("Car Value matches House value");
else
Debug.Log("Car Value DOES NOT match House value");
出力:
カー値が一致しないハウス値
サプライズ!驚き!ゲートとゲートはCar
とHouse
の間で一致しません。 なぜですか?
House
から列挙は4
の値を有し、Car
列挙からGate
ながらは3
の値を有する。Gate
ため4!= 3。
Enumをintにキャストすると、そのインデックス位置が取得されます。位置は配列のように0
から始まります。たとえば、以下のEnum宣言コードは、索引の外観を示しています。 if文true
されるためには
enum Car { Window = 0, Door = 1, Light = 2, Gate = 3, Bath = 4 }
、彼らの両方が、同じ位置になければなりません。彼らは別の位置にある場合false
を得るでしょう。 Enumをもう一度チェックして修正してください。
newMinerの外観は何ですか?また、resourceType列挙型はどのように見えますか?これらの両方を投稿する必要があります。 – Programmer
enum宣言を貼り付けることはできますか?私は、minerTypeとresourceTypeの下にあるものは、実際には互いに対応していないと考えています。 –
理論的には、はい、 'Enum'をintにキャストして比較することができます。しかし、 'Enum'は' [Flags] '(一度に複数の値を考える)を使うこともできます。これに加えて、各「Enum」は数値的に一致する必要があります。また、ブレークポイントを設定して、両方の整数を取得してみてください。 – Zer0