অযোগ্য রেফারেন্স ধরণের তথ্য ফার্স্টআরডিফল্ট থেকে প্রকাশিত হয়নি


10

আমি সি # 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 লক্ষ্য করে যখন অকার্যকরতার তথ্যটি সত্যই প্রকাশ করে না?

উত্তর:


9

দেখে মনে হচ্ছে System.Linq3.0.০ রিলিজে এটিকে বর্ধনযোগ্য নয়। সুতরাং নুলযোগ্য রেফারেন্স প্রকারগুলি সঠিক সতর্কতা নির্গত করে না।

রোজলিন রেপোতে আপনি অনুরূপ সমস্যাগুলি পরীক্ষা করতে পারেন । গিথুবের এই উন্মুক্ত ইস্যুটি আপনার সমস্যার সাথে খুব মিল। এই ইস্যুতে একজন অবদানকারী বর্তমান সমস্যাটি ব্যাখ্যা করে:

System.Linqকোরএফএক্সের মাস্টার শাখায় ক্ষুদ্র টীকাযুক্ত , তবে প্রকাশ / 3.0 এ নয় । সংকলক মধ্যে অপ্রত্যাশিত কিছুই আছে। সংকলকটি এমন কিছু ডায়াগনস্টিক্স সরবরাহ করবে যা দেখায় যে আপনি নাল-বিস্মৃত জিনিস ব্যবহার করছেন।


এটি যুক্ত করতে, আপনি এই প্যাকেজটি আজ সঠিক টীকাগুলি পেতে ব্যবহার করতে পারেন ।
ক্যান্টন 7

1
এটি নেট কোর 3.1 তে এখনও আছে। এটি অযোগ্য রেফারেন্স ধরণের সাথে কম সুন্দর কাজ করে। আমি বিশ্বাস করি যে পুল অনুরোধ কোরফেক্স / পুল / 40651 এটি সমাধান করে, তবে দৃশ্যত আমাদের তা পেতে নেট নেট 5 পর্যন্ত অপেক্ষা করতে হবে :-(
জেপ্প স্টিগ নীলসেন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.