मैं अक्सर अपने कोड में अशक्त प्रचारक ऑपरेटर का उपयोग करता हूं क्योंकि यह मुझे अधिक पठनीय कोड देता है, विशेष रूप से लंबे प्रश्नों में मुझे उपयोग किए जाने वाले प्रत्येक एकल वर्ग को शून्य-चेक करने की आवश्यकता नहीं है।
निम्न कोड एक संकलित त्रुटि को फेंकता है जिसे हम लंबोदर में अशक्त प्रसार संचालक का उपयोग नहीं कर सकते हैं।
var cnt = humans.AsQueryable().Count(a => a.House?[0].Price == 5000);
त्रुटि :
CS8072 त्रुटि एक ट्री ट्री लैम्ब्डा में अशक्त प्रसार संचालक नहीं हो सकता है।
यदि कोड वास्तव में कुछ और नहीं कर सकता है तो कोड का अनुसरण करने के लिए कोड के ऊपर कोड # आसानी से अनुवाद कर सकता है!
var cnt = humans.AsQueryable().Count(a => a.House != null && a.House[0].Price == 5000);
मैं उत्सुक हूं कि C # कुछ नहीं करता है और बस एक संकलक त्रुटि फेंकता है?
Foo?.Bar
के बराबर नहीं हैFoo != null ? Foo.Bar : null
क्योंकिFoo
एक बार अशक्त-प्रसार ऑपरेटर के साथ और दो बार सशर्त के साथ मूल्यांकन किया जाता है, इसलिए सभी मामलों में अनुवाद सही नहीं होगा।