बीच क्या अंतर है Convert.ToString()
और .ToString()
?
मुझे ऑनलाइन कई अंतर मिले, लेकिन प्रमुख अंतर क्या है?
बीच क्या अंतर है Convert.ToString()
और .ToString()
?
मुझे ऑनलाइन कई अंतर मिले, लेकिन प्रमुख अंतर क्या है?
जवाबों:
Convert.ToString()
संभालती है null
, जबकि ToString()
नहीं।
null
एक खाली स्ट्रिंग वापस करना चाहते हैं या एक अपवाद फेंकना चाहते हैं? यह कास्टिंग और उपयोग के बीच अंतर की तरह है as
: मौन रूपांतरण।
ToString()
किसी ऑब्जेक्ट पर कॉल करना यह मानता है कि ऑब्जेक्ट शून्य नहीं है (क्योंकि किसी ऑब्जेक्ट को उस पर इंस्टेंस विधि को कॉल करने के लिए मौजूद होने की आवश्यकता है)। Convert.ToString(obj)
ऑब्जेक्ट को शून्य मानने की आवश्यकता नहीं है (क्योंकि यह रूपांतरित वर्ग पर एक स्थिर विधि है), लेकिन इसके बजाय String.Empty
यदि यह शून्य है तो वापस आ जाएगा ।
Convert.ToString(string value)
रिटर्न null
अगर तर्क है null
। Convert.ToString(object value)
रिटर्न String.Empty
अगर तर्क है null
।
null
मूल्यों को संभालने के बारे में अन्य उत्तरों के अलावा , आधार को कॉल करने से पहले Convert.ToString
उपयोग करने IFormattable
और IConvertible
इंटरफेस करने की कोशिश करता है Object.ToString
।
उदाहरण:
class FormattableType : IFormattable
{
private double value = 0.42;
public string ToString(string format, IFormatProvider formatProvider)
{
if (formatProvider == null)
{
// ... using some IOC-containers
// ... or using CultureInfo.CurrentCulture / Thread.CurrentThread.CurrentCulture
formatProvider = CultureInfo.InvariantCulture;
}
// ... doing things with format
return value.ToString(formatProvider);
}
public override string ToString()
{
return value.ToString();
}
}
परिणाम:
Convert.ToString(new FormattableType()); // 0.42
new FormattableType().ToString(); // 0,42
IConvertible
पूर्ववर्तीता से अधिक पूर्वता लेता है IFormattable
, जो बदले में Object.ToString()
कार्यान्वयन पर पूर्वता लेता है ।
आइए इस उदाहरण के माध्यम से अंतर को समझते हैं:
int i= 0;
MessageBox.Show(i.ToString());
MessageBox.Show(Convert.ToString(i));
हम पूर्णांक i
का उपयोग कर i.ToString ()
या परिवर्तित कर सकते हैं Convert.ToString
। तो क्या अंतर है?
उनके बीच मूल अंतर यह है कि Convert
फ़ंक्शन NULLS को संभालता है जबकि i.ToString ()
ऐसा नहीं करता है; यह एक पूर्ण संदर्भ अपवाद त्रुटि को फेंक देगा। इसलिए अच्छी कोडिंग प्रैक्टिस convert
हमेशा सुरक्षित रहती है।
आप एक वर्ग बना सकते हैं और toString
अपनी इच्छानुसार कुछ भी करने की विधि को ओवरराइड कर सकते हैं।
उदाहरण के लिए- आप एक क्लास "MyMail" बना सकते हैं और toString
ईमेल भेजने की विधि को ओवरराइड कर सकते हैं या करंट ऑब्जेक्ट लिखने के बजाय कुछ अन्य ऑपरेशन कर सकते हैं।
Convert.toString
इसके समकक्ष स्ट्रिंग प्रतिनिधित्व करने के लिए निर्धारित मूल्य से बदल देता है।
विधियों "मूल रूप से" एक ही है, सिवाय निपटने अशक्त ।
Pen pen = null;
Convert.ToString(pen); // No exception thrown
pen.ToString(); // Throws NullReferenceException
MSDN से:
Convert.ToString विधि
निर्दिष्ट मूल्य को इसके समकक्ष स्ट्रिंग प्रतिनिधित्व में परिवर्तित करता है।
एक स्ट्रिंग रिटर्न जो मौजूदा वस्तु का प्रतिनिधित्व करता है।
null
, ""
या "null"
?
कोड प्रेमियों के लिए यह सबसे अच्छा जवाब है।
.............. Un Safe code ...................................
Try
' In this code we will get "Object reference not set to an instance of an object." exception
Dim a As Object
a = Nothing
a.ToString()
Catch ex As NullReferenceException
Response.Write(ex.Message)
End Try
'............... it is a safe code..............................
Dim b As Object
b = Nothing
Convert.ToString(b)
Convert.ToString(strName)
अशक्त मानों strName.Tostring()
को संभालेगा और अशक्त मान को नहीं संभालेगा और एक अपवाद को फेंक देगा।
तो यह बेहतर है का उपयोग करने के Convert.ToString()
तो.ToString();
ToString() Vs Convert.ToString()
समानताएँ: -
दोनों का उपयोग एक विशिष्ट प्रकार को स्ट्रिंग में बदलने के लिए किया जाता है यानी स्ट्रिंग के लिए, स्ट्रिंग को फ्लोट या स्ट्रिंग के लिए ऑब्जेक्ट।
अंतर :-
ToString()
नल संभाल नहीं कर सकता है जबकि मामले में Convert.ToString()
अशक्त मूल्य को संभालना होगा।
उदाहरण :
namespace Marcus
{
class Employee
{
public int Id { get; set; }
public string Name { get; set; }
}
class Startup
{
public static void Main()
{
Employee e = new Employee();
e = null;
string s = e.ToString(); // This will throw an null exception
s = Convert.ToString(e); // This will throw null exception but it will be automatically handled by Convert.ToString() and exception will not be shown on command window.
}
}
}
Convert.ToString
संभाल नहीं है Null Exception
। यह बस करना है:return value == null ? string.Empty : value.ToString()
दोनों तरीकों को समझने के लिए एक उदाहरण लेते हैं:
int i =0;
MessageBox.Show(i.ToString());
MessageBox.Show(Convert.ToString(i));
यहां दोनों विधियों का उपयोग स्ट्रिंग को परिवर्तित करने के लिए किया जाता है, लेकिन उनके बीच मूल अंतर यह है: Convert
फ़ंक्शन हैंडल NULL
, जबकि i.ToString()
ऐसा नहीं होगा NULL reference exception error.
इसलिए एक अच्छा कोडिंग अभ्यास का उपयोग convert
करना हमेशा सुरक्षित होता है।
आइए एक और उदाहरण देखें:
string s;
object o = null;
s = o.ToString();
//returns a null reference exception for s.
string s;
object o = null;
s = Convert.ToString(o);
//returns an empty string for s and does not throw an exception.
Convert.ToString(value)
पहले IConvertible , फिर IFormattable इसी ToString(...)
तरीकों को कॉल करने के लिए कास्टिंग obj की कोशिश करता है । यदि इसके बजाय पैरामीटर मान था null
तो वापस आ गया string.Empty
। अंतिम उपाय के रूप में, obj.ToString()
अगर कुछ और काम नहीं करता है
यह ध्यान देने योग्य है कि Convert.ToString(value)
कर सकते हैं वापसी null
उदाहरण के लिए यदि value.ToString()
रिटर्न अशक्त।
.Net संदर्भ स्रोत देखें
मैंने इस कोड को लिखा और संकलित किया।
class Program
{
static void Main(string[] args)
{
int a = 1;
Console.WriteLine(a.ToString());
Console.WriteLine(Convert.ToString(a));
}
}
'रिवर्स इंजीनियरिंग' ( ilspy ) का उपयोग करके मुझे पता चलता है कि 'object.ToString ()' और 'Convert.ToString (obj)' एक ही काम करते हैं। infact 'Convert.ToString (obj)' कॉल 'object.ToString ()' इसलिए 'object.ToString ()' तेज है।
class System.Object
{
public string ToString(IFormatProvider provider)
{
return Number.FormatInt32(this, null, NumberFormatInfo.GetInstance(provider));
}
}
class System.Convert
{
public static string ToString(object value)
{
return value.ToString(CultureInfo.CurrentCulture);
}
}
C # में यदि आप एक स्ट्रिंग चर घोषित करते हैं और यदि आप उस चर का कोई मान निर्दिष्ट नहीं करते हैं, तो डिफ़ॉल्ट रूप से वह चर शून्य मान लेता है। ऐसी स्थिति में, यदि आप ToString () विधि का उपयोग करते हैं तो आपका प्रोग्राम अशक्त संदर्भ अपवाद को फेंक देगा। दूसरी ओर, यदि आप Convert.ToString () विधि का उपयोग करते हैं तो आपका प्रोग्राम अपवाद नहीं करेगा।
Convert.Tostring()
मूल रूप से सिर्फ निम्नलिखित कहते हैं value == null ? String.Empty: value.ToString()
(string)variable
केवल तभी डालेगा जब आप जो कास्टिंग कर रहे हैं उस पर कोई निहित या स्पष्ट ऑपरेटर हो
ToString()
प्रकार से ओवरराइड किया जा सकता है (इसका इस पर नियंत्रण है कि यह क्या करता है), यदि यह प्रकार के नाम पर परिणाम नहीं देता है
जाहिर है कि अगर कोई वस्तु अशक्त है , तो आप उदाहरण सदस्य तक नहीं पहुँच सकते ToString()
, यह एक अपवाद का कारण होगा
Convert.Tostring () फ़ंक्शन NULL को संभालता है जबकि .Toring () विधि नहीं करती है। यहाँ जाएँ ।