यह वास्तव में इस बात पर निर्भर करता है कि क्या आप जानते हैं कि क्या 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
विधि वह कर सकती है जो आप चाहते हैं।