निम्नलिखित कोड पर विचार करें:
#nullable enable
class Foo
{
public string? Name { get; set; }
public bool HasName => Name != null;
public void NameToUpperCase()
{
if (HasName)
{
Name = Name.ToUpper();
}
}
}
Name = Name.ToUpper () पर मुझे एक चेतावनी मिलती है कि Name एक संभावित अशक्त संदर्भ है, जो स्पष्ट रूप से गलत है। मैं इस चेतावनी को HasName को टाल कर ठीक कर सकता हूं, इसलिए शर्त यह है कि (Name! = Null)।
क्या ऐसा कोई तरीका है जिससे मैं संकलक को निर्देश दे सकूँ कि हसननाम की एक सच्ची प्रतिक्रिया का नाम पर एक गैर-अशक्तता बाधा है?
यह महत्वपूर्ण है क्योंकि HasName वास्तव में बहुत अधिक चीजों का परीक्षण कर सकता है, और मैं इसे कई स्थानों पर उपयोग करना चाहता हूं, या यह एपीआई सतह का एक सार्वजनिक हिस्सा हो सकता है। अशक्त जाँच को कारक बनाने के लिए बहुत से कारण हैं, यह स्वयं की विधि है, लेकिन ऐसा करने से अशक्त संदर्भ चेकर को तोड़ना प्रतीत होता है।
#nullable disableफिर #nullable enableया restoreउसके बाद ( docs.microsoft.com/en-us/dotnet/csharp/… ) के साथ लपेट सकते हैं ।
!ऑपरेटर का उपयोग कर सकते हैं । if(HasName) { Name = Name!.ToUpper(); }
HasValueएक अशक्त प्रकार पर उपयोग करना चाहिए , इसके खिलाफ जांच नहीं करनी चाहिएnull। यह शायद आपकी समस्या को प्रभावित नहीं करता है।