सी # में, यदि मैं लिखने+ = सी # में नल प्रकार के साथ ऑपरेटर
int? x = null;
x += x ?? 1
मैं इस के बराबर होने की अपेक्षा करेंगे दूसरे उदाहरण में 1
शामिल हैं। लेकिन ऐसा नहीं है, इसमें शून्य है। + = ऑपरेटर को शून्य प्रकारों पर काम नहीं लगता है जब उन्हें असाइन नहीं किया गया है। यह मामला क्यों होना चाहिए?
संपादित करें: जैसा कि बताया गया है, ऐसा इसलिए है क्योंकि null + 1 = null
और ऑपरेटर प्राथमिकता है। मेरे बचाव में, मुझे लगता है कि MSDN में इस लाइन अस्पष्ट है !:
पूर्वनिर्धारित एकल और द्विआधारी ऑपरेटरों और किसी भी उपयोगकर्ता परिभाषित ऑपरेटरों कि मूल्य प्रकार के लिए मौजूद हैं भी नल प्रकार के द्वारा प्रयोग किया जा सकता है। [0] ऑपरेंड शून्य हैं, तो ये ऑपरेटर शून्य मान का उत्पादन करते हैं; अन्यथा, ऑपरेटर पर निहित मान का उपयोग परिणाम की गणना करता है।
x += x ?? 1 x = (x + x) ?? 1
दूसरा नहीं है कि तुम क्या उम्मीद कर रहे थे:
+1 आह, ऑपरेटर पूर्वता, मेरे प्राचीन दुश्मन:
यहाँ उन दोनों के टूटने है। आप फिर से हड़ताल! – JDB
'' '' '' '' '' '' 'की प्राथमिकता नहीं है? (@ Servy का जवाब) –
@AustinSalonen नहीं। http://msdn.microsoft.com/en-us/library/6a71f45d.aspx –