অণু প্রকারের রেফারেন্স প্রকার?


135

যখন আমি একটি intঘোরাফেরা হিসাবে ঘোষণা

int? i=null;

iএখানে কি রেফারেন্স টাইপ হয়ে যায়?

উত্তর:


136

না, একটি nullable একটি কাঠামো। যা ঘটছে তা হ'ল নলেবল স্ট্রাক্টের দুটি মান রয়েছে:

  1. ডাটা টাইপ এর মান ( intজন্য int?, DateTimeজন্য DateTime?, ইত্যাদি)।
  2. একটি বুলিয়ান মান যা ডেটা ধরণের মান সেট করা হয়েছে কিনা তা জানায়। ( HasValueসম্পত্তি।)

আপনি যখন ডেটা টাইপের মান সেট করেন, স্ট্রাক্টটি HasValueসত্যে পরিবর্তিত হয়।

অবিচ্ছিন্ন প্রকারগুলি (সি # প্রোগ্রামিং গাইড)


26

থেকে Nullable প্রকার (C # এর প্রোগ্রামিং গাইড) :

অবিচ্ছেদ্য প্রকারগুলি হ'ল সিস্টেমের উদাহরণ ul ননবল স্ট্রাক্ট।

এবং

নুলযোগ্য প্রকারগুলি মান-ধরণের ভেরিয়েবলগুলিকে উপস্থাপন করে যা নালটির মান নির্ধারণ করতে পারে। আপনি কোনও রেফারেন্স টাইপের উপর ভিত্তি করে নালাগুলি টাইপ তৈরি করতে পারবেন না। (রেফারেন্সের ধরনগুলি ইতিমধ্যে নাল মানকে সমর্থন করে))

সুতরাং, না তারা রেফারেন্সের ধরণ নয়।


14

নুলযোগ্য প্রকারগুলি মান মান বা রেফারেন্স প্রকার নয়। এগুলি আরও মান ধরণের মতো তবে রেফারেন্স ধরণের কয়েকটি বৈশিষ্ট্য রয়েছে।

স্বাভাবিকভাবেই, nullable ধরণের সেট করা যেতে পারে null। তদুপরি, একটি nullable টাইপ জেনেরিক structসীমাবদ্ধতা পূরণ করতে পারে না । এছাড়াও, যখন আপনার সাথে একটি nullable type বক্সে HasValueসমান false, আপনি একটি পেতে nullবক্স nullable টাইপ করার পরিবর্তে পয়েন্টার (একই অবস্থা আনবক্সিং বিদ্যমান)।

এই বৈশিষ্ট্যগুলি হ্রাসযোগ্য প্রকারকে অ-মানযুক্ত প্রকারগুলিতে তৈরি করে তবে তারা নিশ্চিত হয় যে এটি কোনও প্রকারের নয় reference এগুলি হ'ল তাদের নিজস্ব বিশেষ অযোগ্য-মান প্রকার।


6

না, নুলযোগ্য টাইপটি আসলে একটি কাঠামো। রানটাইম বুদ্ধিমানের জন্য আপনার জন্য একটি নাল মান নির্ধারণ করবে, একটি রেফারেন্স ধরণের উপস্থিতি দেবে, যখন তা না হয় ....


2
আমি 'বুদ্ধিমানভাবে পরিচালনা' জিজ্ঞাসা করব, বরং বিষয়ভিত্তিক। ব্যক্তিগতভাবে আমি আচরণটি বিভ্রান্তিকর এবং প্রায়শ বিরক্তিকর মনে করি।
নিকোডেমাস 13


0

আপনি তার জায়গায় নাল পাস করতে পারেন এমন আপনার কোনও রেফারেন্স টাইপকে নালার টাইপ করার দরকার নেই।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.