हाल ही में मेरे पास एक अजीब बग था जहां मैं int?
के साथ एक स्ट्रिंग को जोड़ रहा था और फिर उसके बाद एक और स्ट्रिंग जोड़ रहा था।अजीब ऑपरेटर प्राथमिकता के साथ ?? (नल कोलेसिंग ऑपरेटर)
मेरे कोड मूल रूप से इस के बराबर था:,
int? x=10;
string s = "foo" + x ?? 0 + "bar";
आश्चर्यजनक पर्याप्त इस चलाने के लिए और चेतावनी या असंगत प्रकार त्रुटियों के बिना संकलित कर देगा के रूप में होगा इस:
int? x=10;
string s = "foo" + x ?? "0" + "bar";
और फिर इस में जो परिणाम एक अप्रत्याशित प्रकार असंगति त्रुटि:
int? x=10;
string s = "foo" + x ?? 0 + 12;
के रूप में होगा इस सरल उदाहरण:
int? x=10;
string s = "foo" + x ?? 0;
क्या कोई यह समझा सकता है कि यह मेरे लिए कैसे काम करता है?
एक संबंधित समस्या: http://stackoverflow.com/questions/3218140/null-coalescing-operator-and-lambda-expression/3218268#3218268 –
और यहां एक लिंक है जो मेरा उत्तर चमक नहीं देता है ... http://stackoverflow.com/questions/3218140/null-coalescing-operator-and-lambda-expression – ChaosPandion