Aşağıdaki C# snippet'inde ==
yöntemini geçersiz kıldım. _type
, short
türünde bir sayıdır. Yani ben aslında bu iki short
s aynı olduğunda iki WorkUnitType
s aynı olduğunu söylüyorum.== geçersiz kılma == geçersiz kılma
public static bool operator ==(WorkUnitType type1, WorkUnitType type2)
{
if (type1 == null || type2 == null)
return false;
return type1._type == type2._type;
}
R # beni uyarıyor ve yukarıda if
deyimi ile o yakalamaya çalışıyorum, neden/type2
type1
potansiyel boş olabileceğini tamamen açık olduğu için.
Şimdi tamamen anlamsız olan bir StackOverflowException
alıyorum çünkü aslında geçersiz kılma çağırıyorum.
Soru: Bu yöntemi nasıl "doğru" yazarım. type1
veya type2
'un null
olması durumu nasıl yakalayabilirim?
En iyi tahminle: Belki burada ==
kötüye kullanımı ve eşitlik için kontrol ediyorum Equals
geçersiz kılma ile yapılmalıdır. Ama yine de sorunun var olduğunu düşünüyorum. Peki benim mantığımdaki hatam nerede?
ben 'ReferenceEquals' var olduğunu bilmiyordum. Bu aslında cevaptır. Teşekkürler. – Stephan