9

पुराना तरीकामैं नल सशर्त ऑपरेटर के साथ नलबल ऑपरेटर का उपयोग कैसे कर सकता हूं?

int? myFavoriteNumber = 42; 
int total = 0; 
if (myfavoriteNumber.HasValue) 
    total += myFavoriteNumber.Value *2; 

नया तरीका?

int? myFavoriteNumber = 42; 
total += myFavoriteNumber?.Value *2; //fails 
+2

क्या 'पूर्णांक कुल = (myfavoriteNumber.HasValue) के साथ गलत क्या है? myFavoriteNumber.Value * 2: 0; '? अभी भी एक पंक्ति, और आपके सुझाए गए "नए तरीके" –

+0

@ShadowWizard से अधिक पठनीय है, मुझे लगता है कि वह इस समारोह का कई बार उपयोग करना चाह सकता है इसलिए + = का उपयोग ताकि वह कुल रन बनाए रख सके? मैं बस अनुमान लगा रहा हूँ। मुझे अभी भी आपकी टिप्पणी पसंद आई क्योंकि मैं आपके साथ सहमत हूं। –

+0

@PrimeByDesign मैं '??' के साथ जाऊंगा, जैसा कि [इस] (https://stackoverflow.com/a/35970536/111794) उत्तर में है। –

उत्तर

4

शून्य-प्रसार ऑपरेटर? जैसा कि यह कहता है, शून्य मूल्य का प्रचार करें। Int के मामले में? वैल्यू यह संभव नहीं है क्योंकि मूल्य के प्रकार, int, शून्य नहीं हो सकता है (यदि यह संभव था, तो ऑपरेशन null * 2 बन जाएगा, इसका क्या अर्थ होगा?)। तो 'ओल्ड वे' अभी भी ऐसा करने का वर्तमान तरीका है।

+0

_ इसका क्या अर्थ होगा? _ बस एक तरफ के रूप में, आमतौर पर एनयूएलएल द्वारा गुणा किए गए किसी भी संख्या को कुल मिलाकर पूरा किया जाता है। उदाहरण के लिए, सामान्य एसक्यूएल काम करता है। नल का अर्थ अक्सर "मुझे मूल्य नहीं पता"। इस उदाहरण की कल्पना करो: मैं प्रति सेब $ 5 के लिए 5 सेब गुणा करता हूं। तो मुझे एक सेब की लागत पता नहीं है। नतीजा यह है कि _I कुल लागत को नहीं जानता, इसलिए परिणाम नल है। –

3

इस प्रयास करें:

int? myFavoriteNumber = 42; 
total += (myFavoriteNumber??0) *2; 

अभिव्यक्ति (myFavoriteNumber?? 0) की myFavoriteNumber रिक्त है मामले में 0 देता है।

3

मुझे लगता है कि आपने null सशर्त ऑपरेटर के उपयोग को गलत समझा। इसका उपयोग ifs से null की शॉर्ट सर्किट के लिए किया जाता है, जब चरणों में से एक null उत्पन्न करता है।

तो जैसा:

userCompanyName = user?.Company?.Name; 

कृपया ध्यान दें कि userCompanyNamenull अगर user या user.Company शामिल होंगे null है। आपके उदाहरण में totalnull स्वीकार नहीं कर सकता है, तो यह उपयोग के बारे में अधिक है ?? किसी और चीज से:

total = (myFavoriteNumber ?? 0) * 2; 
0

प्रयास करें इस

int? myFavoriteNumber = 42; 
total += (myFavoriteNumber.Value!=null)? myFavoriteNumber.Value*2 : 0; 
संबंधित मुद्दे