मैं C # 8.0 में नए अशक्त संदर्भ प्रकार की सुविधा का परीक्षण करना चाहता था ।
मैंने .NET कोर 3.0 को लक्षित करते हुए एक नई परियोजना .csprojशुरू की, फ़ाइल में अशक्त संदर्भ प्रकारों को सक्षम किया और कोडिंग शुरू की। मैंने एक साधारण सूची बनाई जो एक लेती है string[]और stringउस सरणी में वापस आती है जो बराबर होती है abc। अब, क्योंकि मैं निश्चित नहीं हूं कि abcवास्तव में सरणी में मौजूद है, मैं उपयोग करता हूं FirstOrDefault(), जो कि डिफ़ॉल्ट होना चाहिए nullअगर एक मैच नहीं मिला है।
using System;
using System.Linq;
public string FindArgument(string[] args)
{
var arg = args.FirstOrDefault(x => x == "abc");
return arg;
}
मेरी विधि वापस आती है string, जो अब गैर-अशक्त प्रकार की होनी चाहिए । चूंकि मैं वापस लौट सकता हूं, इसलिए मैं उपरोक्त पद्धति की उम्मीद करूंगा कि शायद अशक्त चर वापस करते समय चेतावनी दी जाए । ऐसा नहीं होता।FirstOrDefault()null arg
FirstOrDefault()विज़ुअल स्टूडियो के लिए हस्ताक्षर को देखते हुए , यह स्पष्ट है कि क्यों : विधि एक लौटाता है string, न कि योग्य समकक्ष जिसकी string?मैं अपेक्षा करता हूं।
नीचे दी गई विधि निकाय के उपयोग से मुझे अपेक्षित चेतावनी मिलती है:
var arg = args.Contains("abc") ? "abc" : null;
return arg;
क्या सिस्टम लाइब्रेरी (इस उदाहरण में System.Linq) वास्तव में .NET कोर 3.0 को लक्षित करते समय अशक्तता की जानकारी को उजागर नहीं करती है?