এটি সত্যই নির্ভর করে যে আপনি জানেন যে o
স্ট্রিং কিনা এবং আপনি এটি দিয়ে কী করতে চান। আপনার মন্তব্যটির অর্থ যদি o
সত্যই সত্যই একটি স্ট্রিং থাকে তবে আমি সরল (string)o
নিক্ষেপ পছন্দ করব - এটি ব্যর্থ হওয়ার সম্ভাবনা নেই।
স্ট্রেড কাস্ট ব্যবহারের সবচেয়ে বড় সুবিধা হ'ল এটি যখন ব্যর্থ হয় তখন আপনি একটি অবৈধ কাস্টেক্সেপশন পান , যা আপনাকে কী ভুল হয়েছে তা বেশ কিছু বলে।
সঙ্গে as
অপারেটর, যদি o
একটি স্ট্রিং নয়, s
সেট করা হয় null
, যা কুশলী হলে আপনি নিশ্চিত না এবং পরীক্ষা করতে চান s
:
string s = o as string;
if ( s == null )
{
// well that's not good!
gotoPlanB();
}
তবে, আপনি যদি এই পরীক্ষাটি না করেন, আপনি s
পরে ব্যবহার করবেন এবং একটি নালরফেরান এক্সেক্সেশন নিক্ষেপ করবেন। এই বেশি প্রচলিত এবং হতে থাকে অনেক কঠিন ট্র্যাক নিচে একবার তারা বন্য আউট ঘটে, প্রায় প্রত্যেক লাইন একটি পরিবর্তনশীল dereferences এবং এক নিক্ষেপ করতে পারে। অন্যদিকে, আপনি (যেমন কোন আদিম, অথবা structs একটি মান টাইপ কাস্ট করতে চেষ্টা করছেন যদি তারিখসময় -), আপনি সোজা ঢালাই ব্যবহার করতে হবে as
না হবে।
স্ট্রিংয়ে রূপান্তর করার বিশেষ ক্ষেত্রে, প্রতিটি বস্তুর একটি থাকে ToString
, তাই আপনার তৃতীয় পদ্ধতিটি o
বাতিল না হলে ঠিক থাকতে পারে এবং আপনি মনে করেন যে ToString
পদ্ধতিটি আপনি যা চান তা করতে পারে।