मैं आज कुछ कोड लिख रहा था और मुझे उम्मीद थी कि कुछ काम नहीं कर रहा था।ओवरराइडिंग सी # सशर्त बयान समस्या
निम्न कोड निष्पादित क्यों करता है भले ही स्थिति को गलत तरीके से मूल्यांकन किया जाना चाहिए?
alt text http://img215.imageshack.us/img215/3011/agfewrf.gif
मैं दो शर्तों के आसपास ब्रेसिज़ डाल, और उनकी स्थिति स्विच करने की कोशिश की है, लेकिन EndedUsingApplication भी अभी भी निष्पादित करता है।
संपादित करें:
इसका कोई मतलब नहीं है || या & & ऑपरेटरों। यह देखो,
alt text http://img20.imageshack.us/img20/6655/aaaaaal.gif
कोई भी अपनी गलती से सीख सकते हैं जब तक कि मैं अपराधी कोड पोस्ट ... इसलिए ये रहा।
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;
}
और यहाँ काम कर कोड
public 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;
}
समस्या होने के कारण जब! = ऑपरेटर दो शून्य मान प्राप्त है ...।
आप पोस्ट कर सकते हैं कि कोड? – danish
@ जे रिग्स: बिंगो! हाँ यह मेरे पास है। वहां कुछ बुरा तर्क है जो गलत परिणाम लौटा रहा है। एक उचित उत्तर लिखें और शायद मैं इसे उत्तर के रूप में चिह्नित करूंगा;) – Nippysaurus
@ निप्पी - एक उत्तर के रूप में जोड़ें! धन्यवाद! –