কেউ এই আলোচনার থ্রেডে বলেছিলেন যে আপনি কিছুতেই স্ট্রিং তৈরি করতে পারবেন না।
(যা আমার মনে হয় একটি দুর্দান্ত বাক্যাংশ)। তবে হ্যাঁ - আপনি করতে পারেন :-), যেমন নিম্নলিখিত উদাহরণটি দেখায়:
var x = null + (string)null;
var wtf = x.ToString();
সূক্ষ্ম কাজ করে এবং একটি ব্যতিক্রম মোটেও ছুঁড়ে না। পার্থক্যটি হ'ল আপনাকে একটি নালকে একটি স্ট্রিংয়ে ফেলে দিতে হবে - আপনি যদি (স্ট্রিং) কাস্টটি সরিয়ে ফেলেন তবে উদাহরণটি এখনও কম্পাইল করে তবে রান-টাইম ব্যতিক্রম ছুঁড়ে ফেলে: "অপারেটর '+' অপারেশনগুলিতে অস্পষ্ট '<null>' এবং '<null>' টাইপ করুন।
এনবি উপরের কোড উদাহরণে, x এর মান শূন্য নয় যেমনটি আপনি প্রত্যাশা করতে পারেন, এটি আসলে একটি খালি স্ট্রিং যখন আপনি একটি স্ট্রিংয়ের মধ্যে অপারেন্ডকে কাস্ট করেছেন।
আর একটি আকর্ষণীয় তথ্য হ'ল সি # / .NET- এnull
উপায়টি চিকিত্সা করা সর্বদা এক রকম হয় না যদি আপনি বিভিন্ন ডেটা ধরণের বিবেচনা করেন। উদাহরণ স্বরূপ:
int? x = 1; // string x = "1";
x = x + null + null;
Console.WriteLine((x==null) ? "<null>" : x.ToString());
বিবেচনা 1st লাইন কোড স্নিপেট এর: যদি x
একটি nullable পূর্ণসংখ্যা পরিবর্তনশীল (অর্থাত int?
) মান ধারণকারী 1
, তাহলে আপনি ফলাফলের পেয়ে থাকেন <null>
ফিরে। যদি এটি মান সহ একটি স্ট্রিং হয় (মন্তব্যে দেখানো হয়) "1"
তবে আপনি "1"
তার চেয়ে ফিরে আসছেন <null>
।
এনবি এছাড়াও আকর্ষণীয়: আপনি যদি var x = 1;
প্রথম লাইনের জন্য ব্যবহার করেন তবে আপনি রানটাইম ত্রুটি পেয়ে যাচ্ছেন। কেন? কারণ অ্যাসাইনমেন্টটি ভেরিয়েবলটি x
ডেটাটাইপগুলিতে পরিণত করবে int
, যা কোনও পরিবর্তনযোগ্য নয়। সংকলকটি int?
এখানে ধরে নিচ্ছে না এবং তাই যুক্ত হওয়া দ্বিতীয় লাইনে ব্যর্থ হয় null
।
null.ToString()
নামটি দেওয়া হয়েছে এটি আমি অদ্ভুত বলে মনে করিwtf
। কেন আপনাকে অবাক করে? আপনি যখন প্রথম স্থান থেকে কল করার কিছু নেই তখন আপনি কোনও ইনস্ট্যান্স পদ্ধতিতে কল করতে পারবেন না।