উত্তর:
এর অর্থ হল যে প্রশ্নের মান টাইপ হ'ল এক প্রকার প্রকারের
অবিচ্ছেদ্য প্রকারগুলি হ'ল সিস্টেমের উদাহরণ ul ননবল স্ট্রাক্ট। একটি nullable প্রকারটি তার অন্তর্নিহিত মান প্রকারের জন্য মানগুলির সঠিক ব্যাপ্তি উপস্থাপন করতে পারে, এবং অতিরিক্ত নাল মানকেও উপস্থাপন করতে পারে। উদাহরণস্বরূপ, একটি
Nullable<Int32>
, উচ্চারিত "ইনট 32 এর ন্যারেবল", -2147483648 থেকে 2147483647 থেকে কোনও মান নির্ধারিত হতে পারে, বা এটি নাল মান নির্ধারণ করতে পারে। একটিNullable<bool>
মান, সত্য, মিথ্যা বা নাল নির্ধারণ করা যেতে পারে। সংখ্যাসূচক এবং বুলিয়ান প্রকারগুলিকে নাল নির্ধারণের ক্ষমতাটি বিশেষত কার্যকর যখন আপনি ডাটাবেসগুলি এবং অন্যান্য ডেটা ধরণের সাথে কাজ করছেন যখন কোনও উপাদান নির্ধারিত হয় যা কোনও মান নির্ধারিত হয় না। উদাহরণস্বরূপ, একটি ডেটাবেজে বুলিয়ান ক্ষেত্র মানগুলি সত্য বা মিথ্যা সঞ্চয় করতে পারে বা এটি অপরিজ্ঞাত হতে পারে।class NullableExample { static void Main() { int? num = null; // Is the HasValue property true? if (num.HasValue) { System.Console.WriteLine("num = " + num.Value); } else { System.Console.WriteLine("num = Null"); } // y is set to zero int y = num.GetValueOrDefault(); // num.Value throws an InvalidOperationException if num.HasValue is false try { y = num.Value; } catch (System.InvalidOperationException e) { System.Console.WriteLine(e.Message); } } }
int
প্রকার এবং একই Integer
শ্রেণি আছে।
এটি একটি সংক্ষিপ্ত হাত Nullable<int>
। Nullable<T>
মান ধরণের সেট করতে সেট করতে ব্যবহৃত হয় null
। মানের ধরণগুলি সাধারণত নাল হতে পারে না ।
value types
বাতিল হতে পারে না। যদি আপনি কোনও মান নির্দিষ্ট করে না দিয়ে কোনও int বা বুল (যা মান ধরণের) ঘোষণা করেন তবে তাদের মানগুলি (যথাক্রমে 0 এবং মিথ্যা, যথাক্রমে) থাকবে। তারা বাতিল হবে না। নির্দিষ্ট কাউকে না দেওয়া reference types
, এই ধরনের বস্তু বা MyClass হিসাবে, অন্যদিকে, নাল হতে হবে। আপনি মান ধরণের এবং রেফারেন্স ধরণের মধ্যে পার্থক্যটি পড়তে চাইতে পারেন।
ভিতরে
x ? "yes" : "no"
? যদি একটি বাক্য ঘোষণা করে । এখানে: x বুলিয়ান অবস্থার প্রতিনিধিত্ব করে; এর আগের অংশ : হয় তারপর বাক্য এবং অংশ পরে অন্য বাক্য।
উদাহরণস্বরূপ,
int?
? একটি নালযোগ্য টাইপ ঘোষণা করে এবং এর অর্থ হ'ল টাইপটির আগে এটির নাল মান হতে পারে।
return value ? value : "isNull";
আমাকে বলছে যে এটি string value
বিলে রূপান্তরযোগ্য নয়।
অবিচ্ছেদ্য প্রকারগুলি হ'ল সিস্টেমের উদাহরণ ul ননবল স্ট্রাক্ট। একটি নালযোগ্য টাইপ তার অন্তর্নিহিত মান প্রকারের জন্য মানগুলির সাধারণ পরিসীমা এবং অতিরিক্ত নাল মানের প্রতিনিধিত্ব করতে পারে । উদাহরণস্বরূপ, একটি [
Nullable<Int32>
], উচ্চারিত "ইন্টার 32 এর ন্যারেবল", -2147483648 থেকে 2147483647 থেকে কোনও মান নির্ধারিত হতে পারে, বা এটি নাল মান নির্ধারণ করতে পারে। এ [Nullable<bool>
] মানগুলি সত্য বা মিথ্যা, বা বাতিল হয়ে যায়। ডাটাবেস এবং অন্যান্য ডেটা টাইপগুলির সাথে যখন কোনও মূল্য নির্ধারিত নাও হতে পারে এমন উপাদানগুলির সাথে ডিল করার সময় অঙ্ক এবং বুলিয়ান প্রকারভেদে নাল নির্ধারণ করার ক্ষমতা বিশেষভাবে কার্যকর। উদাহরণস্বরূপ, একটি ডেটাবেজে বুলিয়ান ক্ষেত্র মানগুলি সত্য বা মিথ্যা সঞ্চয় করতে পারে বা এটি অপরিজ্ঞাত হতে পারে।
এটি ঘোষিত করে যে প্রকারটি প্রবণতাযুক্ত।
ব্যবহারিক ব্যবহার:
public string someFunctionThatMayBeCalledWithNullAndReturnsString(int? value)
{
if (value == null)
{
return "bad value";
}
return someFunctionThatHandlesIntAndReturnsString(value);
}
উপরের উত্তরগুলিতে যোগ করতে এখানে একটি কোড নমুনা
struct Test
{
int something;
}
struct NullableTest
{
int something;
}
class Example
{
public void Demo()
{
Test t = new Test();
t = null;
NullableTest? t2 = new NullableTest();
t2 = null;
}
}
এটি সংকলনের ত্রুটি দেয়:
ত্রুটি 12 নালটিকে 'টেস্টে' রূপান্তর করতে পারে না কারণ এটি একটি অ-অযোগ্য মান ধরণের
লক্ষ্য করুন নুলবেল টেস্টের জন্য কোনও সংকলন ত্রুটি নেই। (টি -2 ঘোষণায়? নোট করুন)
int?
জন্য সাধারণভাবে সংক্ষেপে হয় Nullable<int>
। দুটি রূপই বিনিময়যোগ্য।
Nullable<T>
এটি এমন একটি অপারেটর যা আপনি T
এটি মান্য করার জন্য কোনও মান ধরণের সাথে ব্যবহার করতে পারেন null
।
আপনি এটা জানেন না যদি: মান ধরনের ধরনের যে মান গ্রহণ করে হয় int
, bool
, char
ইত্যাদি ...
তারা মানগুলির রেফারেন্স গ্রহণ করতে পারে না: আপনি কোনও সংকলন-সময় ত্রুটি উত্পন্ন করবেন যদি আপনি তাদের রেফারেন্স প্রকারেরnull
বিপরীতে, একটি স্পষ্ট করে দেন যা স্পষ্টতই এটি গ্রহণ করতে পারে।
কেন আপনি এটি প্রয়োজন হবে? কারণ কখনও কখনও আপনার মান ধরণের ভেরিয়েবলগুলি এমন কোনও কিছু দ্বারা খুব ভাল কাজ করে না এমন কোনও ফেরৎ পাওয়া নাল রেফারেন্স পেতে পারে, যেমন কোনও ডাটাবেস থেকে অনুপস্থিত বা অপরিজ্ঞাত ভেরিয়েবল ফিরে আসে।
আমি আপনাকে মাইক্রোসফ্ট ডকুমেন্টেশন পড়ার পরামর্শ দিচ্ছি কারণ এটি বিষয়টিকে বেশ ভালভাবে কভার করে।