यह वास्तव में इस बात पर निर्भर करता है कि क्या आप जानते हैं कि क्या oएक स्ट्रिंग है और आप इसके साथ क्या करना चाहते हैं। यदि आपकी टिप्पणी का अर्थ है कि oवास्तव में एक स्ट्रिंग है, तो मैं सीधे (string)oकलाकारों को पसंद करूंगा - यह विफल होने की संभावना नहीं है।
स्ट्रेट कास्ट का उपयोग करने का सबसे बड़ा फायदा यह है कि जब यह विफल होता है, तो आपको एक InvalidCastException मिलती है , जो आपको बताती है कि क्या गलत हुआ।
asऑपरेटर के साथ , यदि oकोई स्ट्रिंग नहीं है , तो उसे sसेट कर दिया जाता है null, जो यदि आप अनिश्चित हैं तो परीक्षण करना चाहते हैं s:
string s = o as string;
if ( s == null )
{
// well that's not good!
gotoPlanB();
}
हालाँकि, यदि आप वह परीक्षण नहीं करते हैं, तो आप sबाद में उपयोग करेंगे और NullReferenceException को फेंक देंगे । लगभग हर पंक्ति में एक चर के रूप में जंगल में होने पर ये अधिक सामान्य और बहुत कठिन हो जाते हैं ताकि वे एक बार नीचे गिर सकें । दूसरी ओर, यदि आप एक मान प्रकार (किसी भी आदिम, या डेटाइम के रूप में संरचना ) में डालने की कोशिश कर रहे हैं, तो आपको सीधे कलाकारों का उपयोग करना asहोगा - काम नहीं करेगा।
स्ट्रिंग में कनवर्ट करने के विशेष मामले में, प्रत्येक ऑब्जेक्ट में एक है ToString, इसलिए आपकी तीसरी विधि ठीक हो सकती है यदि oयह शून्य नहीं है और आपको लगता है कि ToStringविधि वह कर सकती है जो आप चाहते हैं।