কেউ এই আলোচনার থ্রেডে বলেছিলেন যে আপনি কিছুতেই স্ট্রিং তৈরি করতে পারবেন না।
(যা আমার মনে হয় একটি দুর্দান্ত বাক্যাংশ)। তবে হ্যাঁ - আপনি করতে পারেন :-), যেমন নিম্নলিখিত উদাহরণটি দেখায়:
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। কেন আপনাকে অবাক করে? আপনি যখন প্রথম স্থান থেকে কল করার কিছু নেই তখন আপনি কোনও ইনস্ট্যান্স পদ্ধতিতে কল করতে পারবেন না।