আমি বিল ওয়াগনার দ্বারা কার্যকর সি # পড়ছি । ইন আইটেম 14 - ছোট করুন ডুপ্লিকেট সূচনা লজিক , তিনি নতুন ঐচ্ছিক প্যারামিটার একটি কন্সট্রাকটর বৈশিষ্ট্য ব্যবহারের নিম্নলিখিত উদাহরণে দেখায়:
public MyClass(int initialCount = 0, string name = "")
লক্ষ্য করুন যে তিনি তার ""
পরিবর্তে ব্যবহার করেছেন string.Empty
।
তিনি মন্তব্য করেছেন:
আপনি [উপরের উদাহরণে] নোট করবেন যে দ্বিতীয় কনস্ট্রাক্টর আরও প্রথার পরিবর্তে নাম প্যারামিটারে ডিফল্ট মানটির জন্য "" নির্দিষ্ট করেছেন
string.Empty
। এটি কারণstring.Empty
একটি সংকলন-সময় ধ্রুবক নয়। এটি স্ট্রিং ক্লাসে সংজ্ঞায়িত একটি স্ট্যাটিক সম্পত্তি। যেহেতু এটি একটি সংকলন ধ্রুবক নয়, আপনি এটি কোনও প্যারামিটারের জন্য ডিফল্ট মান হিসাবে ব্যবহার করতে পারবেন না।
আমরা string.Empty
যদি সব পরিস্থিতিতে স্থির ব্যবহার করতে না পারি , তবে তা কি এর উদ্দেশ্যকে পরাভূত করে না? আমি ভেবেছিলাম যে খালি স্ট্রিংয়ের উল্লেখ করার মতো আমাদের কাছে সিস্টেম-স্বতন্ত্র উপায় রয়েছে তা নিশ্চিত হয়ে আমরা এটি ব্যবহার করব। আমার বোঝা কি ভুল? ধন্যবাদ
আপডেট করুন
শুধু একটি ফলো আপ মন্তব্য। এমএসডিএন অনুসারে:
প্রতিটি alচ্ছিক প্যারামিটারের সংজ্ঞাটির অংশ হিসাবে একটি ডিফল্ট মান থাকে। যদি সেই প্যারামিটারের জন্য কোনও আর্গুমেন্ট না পাঠানো হয়, তবে ডিফল্ট মান ব্যবহৃত হয়। ডিফল্ট মানগুলি অবশ্যই ধ্রুবক হতে হবে।
তারপরে আমরা হয় না ব্যবহার করতে সক্ষম নই System.Environment.NewLine
, বা নতুন ইনস্ট্যান্টেটেড অবজেক্টগুলি ডিফল্ট মান হিসাবে ব্যবহার করতে পারি। আমি এখনও VS2010 ব্যবহার করি নি, এবং এটি হতাশাব্যঞ্জক!