আমি সি # 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?
আমি প্রত্যাশা করব a
নীচের পদ্ধতিটির বডিটি ব্যবহার করা আমার প্রত্যাশিত সতর্কতাটি দেয়:
var arg = args.Contains("abc") ? "abc" : null;
return arg;
সিস্টেম লাইব্রেরিগুলি (এই উদাহরণস্বরূপ System.Linq
) .NET কোর 3.0 লক্ষ্য করে যখন অকার্যকরতার তথ্যটি সত্যই প্রকাশ করে না?