Bugün biraz kod yazıyordum ve beklediğim gibi bir şey çalışmıyordu.C# Koşullu deyimler sorununu geçersiz kılma
Aşağıdaki kod, koşulun yanlış olarak değerlendirilmiş olmasına rağmen neden yürütülür?
alt text http://img215.imageshack.us/img215/3011/agfewrf.gif
Ben iki koşula etrafında parantez koyarak ve konumlarını değiştirme denedi, ama EndedUsingApplication bile hala yürütür.
DÜZENLEME:
O ile ilgisi yoktur || veya & & operatörleri. işte öyle, ben suçlu kodu göndermeden sürece
alt text http://img20.imageshack.us/img20/6655/aaaaaal.gif
Kimse benim hata öğrenebilirler ... Bu bir bak. Burada
public static bool operator ==(ActiveApplication a, ActiveApplication b)
{
if ((object)a == null || (object)b == null)
return false;
return a.process_name == b.process_name && a.window_title == b.window_title;
}
public static bool operator !=(ActiveApplication a, ActiveApplication b)
{
return a == b ? false : true;
}
Ve
! = operatörü iki boş değerler alındığındapublic static bool operator ==(ActiveApplication a, ActiveApplication b)
{
// Casting to object class prevents this comparison operator being executed
// again and causing an infinite loop (which I think .NET detects and stops
// but it would still be a huge hole in the logic.
if ((object)a == null && (object)b == null)
return true;
if ((object)a == null^(object)b == null)
return false;
return a.process_name == b.process_name && a.window_title == b.window_title;
}
public static bool operator !=(ActiveApplication a, ActiveApplication b)
{
return a == b ? false : true;
}
sorun olduğu ortaya çıktı ... çalışma kodudur.
Eğer bu kodu gönderebilir miyim:
– danish@Jay Riggs: Bingo! Evet, sahip olduğum ortaya çıktı. Orada yanlış bir sonuç döndüren bazı kötü mantık var. Uygun bir cevap yazın ve belki cevap olarak işaretleyeceğim;) – Nippysaurus
@Nippy - cevap olarak ekle! Teşekkürler! –