নিম্নলিখিত কোড বিবেচনা করুন:
#nullable enable
class Foo
{
public string? Name { get; set; }
public bool HasName => Name != null;
public void NameToUpperCase()
{
if (HasName)
{
Name = Name.ToUpper();
}
}
}
নাম = নাম.আমাদের উপর () আমি একটি সতর্কতা পেয়েছি যে নামটি একটি সম্ভাব্য নাল রেফারেন্স, যা পরিষ্কারভাবে ভুল। আমি এই সতর্কতাটি HasName ইনলাইন করে নিরাময় করতে পারি তাই শর্ত যদি (নাম! = নাল) থাকে।
আমি কি কোনও উপায়ে সংকলককে নির্দেশ দিতে পারি যে হাসনামের সত্যিকারের প্রতিক্রিয়া নামের উপর একটি অ-অযোগ্যতা বাধা বোঝায়?
এটি গুরুত্বপূর্ণ কারণ হাসনাম প্রকৃতপক্ষে আরও অনেক কিছুর পরীক্ষা করতে পারে এবং আমি এটি বেশ কয়েকটি জায়গায় ব্যবহার করতে চাইতে পারি, বা এটি API পৃষ্ঠার সার্বজনীন অংশ হতে পারে। নাল চেকটি এর নিজস্ব পদ্ধতিতে ফ্যাক্টর করার অনেকগুলি কারণ রয়েছে তবে এটি করার ফলে অকার্যকর রেফারেন্স চেকারটি ভেঙে যায় বলে মনে হয়।
#nullable disableতারপরে #nullable enableবা তারপরে restoreআবার কোডটি মোড়ানো করতে পারেন ( ডকস.মাইক্রোসফটকম / en-us / dotnet / csharp/… )।
!অপারেটরটি ব্যবহার করতে পারেন । if(HasName) { Name = Name!.ToUpper(); }
HasValueএকটি ক্ষুদ্র প্রকারে ব্যবহার করা উচিত , এটির বিরুদ্ধে পরীক্ষা না করেnull। যদিও এটি সম্ভবত আপনার সমস্যার প্রভাব ফেলবে না।