मैंने अभी एक SO post पढ़ा है जो समझाया गया है कि FirstOrDefault()
का रिटर्न प्रकार चयनित तत्व के मान के आधार पर अलग-अलग होगा।Int और Int के साथ FirstOrDefault व्यवहार?
उदाहरण:
ICollection<String> list = new List<String>();
list.Add("bye");
int a = (from x in list where (x == "hi") select x.Length).FirstOrDefault();
इस उदाहरण में, a
0 के बराबर के बाद से int
डिफ़ॉल्ट मान 0.
हालांकि है हो जाएगा, मैं करने के लिए .Cast<int?>()
पहले से लिंक पोस्ट के अनुसार जोड़ सकते हैं null
प्राप्त करें जब क्वेरी 0 परिणाम लौटाती है।
int? a = (from x in list where ... x.Length).Cast<int?>().FirstOrDefault();
मैं एक संकलन समय त्रुटि क्यों नहीं मिलता है (या कम से कम एक चेतावनी), मेरा पहला उदाहरण के लिए, मैं एक Nullable पूर्णांक (int?
) का उपयोग करते हैं बल्कि एक नियमित int
से?
अगर मैं सही ढंग से समझ, जब null
के एक मूल्य में मेरी पहली क्वेरी होगा कभी नहीं परिणाम प्रदर्शन कर एक int?
का उपयोग कर।
आपका प्रश्न मुझे स्पष्ट नहीं है। बिना किसी चेतावनी के सटीक कोड संकलित करते हैं जहां आपको त्रुटि/चेतावनी की उम्मीद है? यह सही है कि 'int' के लिए defalt मान' 0' है, और 'int? 'का' शून्य 'है। –
हाय @ जेपेस्टिगनिएल्सन - मैं उलझन में था कि उपरोक्त 'int?' उदाहरण के लिए कंपाइलर, मुझे नलबल प्रकार का उपयोग करने देगा, भले ही 'शून्य' कभी वापस नहीं आएगा। 'dasblinkenlight 'पूरी तरह से मेरे सवाल का जवाब दिया। –