मेरे पास C # में दो ऑब्जेक्ट हैं और यह नहीं जानते कि क्या यह बूलियन या कोई अन्य प्रकार है। हालाँकि जब मैं उन C की तुलना करने की कोशिश करता हूं तो # सही उत्तर देने में विफल रहता है। मैं VB.NET के साथ एक ही कोड की कोशिश की है और यह किया है!
अगर कोई समाधान है तो क्या कोई मुझे बता सकता है कि इसे कैसे ठीक किया जाए?
सी#:
object a = true;
object b = true;
object c = false;
if (a == b) c = true;
MessageBox.Show(c.ToString()); //Outputs False !!
VB.NET:
Dim a As Object = True
Dim b As Object = True
Dim c As Object = False
If (a = b) Then c = True
MessageBox.Show(c.ToString()) '// Outputs True
aतो आपको बॉक्सिंग मिलती है और एक बॉक्स होता है true। जब आप असाइन करते हैं bतो आपको एक और बॉक्स भी मिलता है true। जब आप तुलना करते हैं aऔर b, क्योंकि दोनों संकलन-समय प्रकार के हैं object, तो आप operator ==(object, object)C # भाषा विनिर्देश द्वारा परिभाषित अधिभार कहते हैं । यह ओवरलोड चेक करता है कि संदर्भ एक ही वस्तु पर जाते हैं या नहीं। चूंकि आपके पास दो बक्से हैं, इसलिए परिणाम है false, और "आपके" के तहत "बयान" ifनहीं चलेगा। इसे बेहतर समझने के लिए, इस के असाइनमेंट को बदलने का प्रयास bकरें: object b = a;अब आपके पास सिर्फ एक बॉक्स है।
a.Equals(b)?