আমি জানি আমি এই প্রশ্নে অবিশ্বাস্যভাবে দেরি করেছি, তবে আমি মনে করি উত্তরটি প্রাসঙ্গিক হয়ে উঠবে কারণ সি # এর সর্বশেষ প্রধান পুনরাবৃত্তি প্রকাশের কাছাকাছি আসে, পরে প্রকাশিত হয়। সি # 8.0 এ একটি বড় পরিবর্তন আসবে, সি # সমস্ত ধরণের নਾਲ নয় বলে ধরে নেওয়া হবে ।
ম্যাডস টর্গারসেনের মতে:
সমস্যাটি হল নাল উল্লেখগুলি এত কার্যকর। সি # তে, তারা প্রতিটি রেফারেন্স টাইপের ডিফল্ট মান। ডিফল্ট মান আর কি হবে? কোনও ভেরিয়েবলের আর কী মান থাকতে পারে, যতক্ষণ না আপনি সিদ্ধান্ত নিতে পারেন যে এটিকে আর কী বরাদ্দ করা হবে? যত তাড়াতাড়ি আপনি এটি পূরণ করার আশেপাশে না পৌঁছাবেন ততক্ষণে আমরা আর কী কী মান সহ নতুন করে বরাদ্দকৃত রেফারেন্সগুলি দিয়ে রইলাম?
এছাড়াও, কখনও কখনও নাল এটি এবং নিজের মধ্যে একটি বোধগম্য মান। কখনও কখনও আপনি এই সত্যটি উপস্থাপন করতে চান যে, বলুন, একটি ক্ষেত্রের কোনও মূল্য নেই। এটি একটি পরামিতি জন্য "কিছুই" পাস ঠিক আছে। জোর কখনও কখনও হয়, যদিও। এবং এর মধ্যে সমস্যার আরেকটি অংশ রয়েছে: সি # এর মতো ভাষা আপনাকে এখানে প্রকাশ করার পক্ষে একটি ভাল ধারণা কিনা তা প্রকাশ করতে দেয় না।
সুতরাং ম্যাডস দ্বারা প্রদত্ত রেজোলিউশনটি হ'ল:
আমরা বিশ্বাস করি যে রেফারেন্সটি নালাগুলি না চাওয়াই বেশি সাধারণ। অযোগ্য রেফারেন্স ধরণেরগুলি বিরল ধরনের হবে (যদিও আমাদের কতটা বলতে আমাদের কাছে ভাল ডেটা নেই) তবে এগুলি হ'ল একটি নতুন টিকা প্রয়োজন।
ভাষাটি ইতিমধ্যে - নল মান ধরণের জন্য - এবং একটি সিনট্যাক্সের ধারণা রয়েছে not দুজনের মধ্যে সাদৃশ্য ভাষা সংযোজনকে ধারণাগতভাবে সহজ এবং ভাষাতাত্ত্বিকভাবে সহজ করে তুলবে।
এটি সঠিক বলে মনে হচ্ছে আপনি নিজেরাই বা আপনার গ্রাহককে বোঝার নাল মান দিয়ে বোঝা করবেন না যদি আপনি সক্রিয়ভাবে সিদ্ধান্ত না নেন যে আপনি সেগুলি চান। নালস, তাদের অনুপস্থিতি নয়, এমন জিনিস হওয়া উচিত যা আপনাকে স্পষ্টভাবে বেছে নিতে হবে।
পছন্দসই বৈশিষ্ট্যের একটি উদাহরণ:
public class Person
{
public string Name { get; set; }
public string? Address { get; set; }
}
পূর্বরূপটি ভিজ্যুয়াল স্টুডিও 2017, 15.5.4+ পূর্বরূপের জন্য উপলব্ধ।