2010-05-28 28 views
6

aynı enum türünde enum değerleri içeren iki nesne karşılaştır Enum kullanılan türden bağımsız sonuç. Karşılaştırmada, nesne her zaman enumlar içerecek ve her ikisi de aynı türde olacaktır.Ben tanımlanan bir enum türüne sahip

Bunu nasıl başarabilirim?

cevap

4

There is a good article on MSDN on when to use == and when to use Equals.

Temelde eşitlik 2 türü vardır. Eğer 2 nesnenin referans eşitliği varsa, bu nedenle değer eşitliğine de sahip olurlar (her iki referans da aynı nesneye işaret eder, dolayısıyla elbette değerleri aynıdır).

Bunun tersi (ve sizin durumunuzda) her zaman doğru değildir. Eğer 2 nesne değer eşitliğine sahipse, mutlaka referans eşitliğine sahip olmazlar. Sizin durumunuzda == referans eşitliği olarak hareket ediyor.

  • Genellikle istediğini o System.Object'de tanımlanan sanal bir yöntemdir, Equals olduğunu.

  • Genellikle başvuru türleri için istemediğinizi ==, genellikle iki referansın aynı nesneye başvurup başvurmadığını karşılaştırır. Senin durumunda A ve B yılında

2 farklı nesneler içine kutuya alınır. A, ilk ve B ikinci anlamına gelir. ==, her ikisinin de farklı şeyler için referring olduğunu test ediyor ve görüyor.

+0

Enum karşılaştırması Özel Durum mu atar? eğer evet ise, onun çözümü ne olurdu? –

3

Yalnızca A.Equals(B) kullanın, bu, iç türden Eşittir.

Sizin durumunuzda, == kullanamazsınız, çünkü A ve B 2 farklı nesnede kutulanır. Referans eşitlik ve değer eşitliği:

İlgili konular