Convert.ToString () और .ToString () के बीच अंतर


158

बीच क्या अंतर है Convert.ToString()और .ToString()?

मुझे ऑनलाइन कई अंतर मिले, लेकिन प्रमुख अंतर क्या है?


7
आप कहते हैं कि आपको वेब पर कई अंतर मिले हैं और बाद में आप पूछते हैं कि क्या केवल इस विशिष्ट कारण के लिए? वेब पर आपको और क्या मिला?
रयान

3
Convert.ToString () में एक अधिभार है, जो CultureInfo का उपयोग करने की अनुमति देता है, जबकि .TString () में ऐसा अधिभार नहीं होता है।
आर्टीमिक्स

जवाबों:


232

Convert.ToString()संभालती है null, जबकि ToString()नहीं।


3
अच्छा .. इस विशिष्ट कारण के लिए ही वे उपयोग कर रहे हैं। दो तरीके?
टिनटिन

इसके अलावा, अर्ध-संबंधित, अधिक विस्तार के लिए इस उत्तर को देखें: stackoverflow.com/questions/496096/…
JYelton

JustDecompile / Reflector: kodefuguru.com/post/2011/06/14/…
Ubikuity

5
क्या आप nullएक खाली स्ट्रिंग वापस करना चाहते हैं या एक अपवाद फेंकना चाहते हैं? यह कास्टिंग और उपयोग के बीच अंतर की तरह है as: मौन रूपांतरण।
स्टाइल सेपल

@ यूबीक्यूइटी: लिंक टूटा है
hdoghmen

64

ToString()किसी ऑब्जेक्ट पर कॉल करना यह मानता है कि ऑब्जेक्ट शून्य नहीं है (क्योंकि किसी ऑब्जेक्ट को उस पर इंस्टेंस विधि को कॉल करने के लिए मौजूद होने की आवश्यकता है)। Convert.ToString(obj)ऑब्जेक्ट को शून्य मानने की आवश्यकता नहीं है (क्योंकि यह रूपांतरित वर्ग पर एक स्थिर विधि है), लेकिन इसके बजाय String.Emptyयदि यह शून्य है तो वापस आ जाएगा ।


var arg = Request.Params.Get ("__ EVENTARGUMENT"); string _arg = Convert.ToString (arg); _g स्ट्रिंग को वापस नहीं ले रहा है। Arg के शून्य होने पर खाली करें। क्यों?
vml19

2
@ नीला आप टिप्पणी के बजाय यह पूछते हुए एक और सवाल खोलना चाहेंगी। मेरा पहला सवाल यह है कि जब arg null होता है तो यह क्या करता है? मेरा पहला विचार यह है कि "arg" वास्तव में पहले से ही "string" प्रकार का है, इसलिए आप Convert.ToString (...) के अधिभार को बुला रहे हैं, कि आप जो भी पास करते हैं उसे वापस कर देते हैं। यह चर्चा विधि के "अधिभार" के संबंध में है।
क्रिस ड्वायर

4
@ रोश हां, मैं बस इससे थोड़ा संभल गया। Convert.ToString(string value)रिटर्न nullअगर तर्क है nullConvert.ToString(object value)रिटर्न String.Emptyअगर तर्क है null
टिम गुडमैन

22

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

1
इसे सही उत्तर में जोड़ा जाना चाहिए क्योंकि यह काफी महत्वपूर्ण जानकारी है।
संथोस

2
एक पूरक के रूप में - संदर्भ स्रोत पर आधारित IConvertibleपूर्ववर्तीता से अधिक पूर्वता लेता है IFormattable, जो बदले में Object.ToString()कार्यान्वयन पर पूर्वता लेता है ।
Grx70

11

आइए इस उदाहरण के माध्यम से अंतर को समझते हैं:

int i= 0;
MessageBox.Show(i.ToString());
MessageBox.Show(Convert.ToString(i));

हम पूर्णांक iका उपयोग कर i.ToString ()या परिवर्तित कर सकते हैं Convert.ToString। तो क्या अंतर है?

उनके बीच मूल अंतर यह है कि Convertफ़ंक्शन NULLS को संभालता है जबकि i.ToString ()ऐसा नहीं करता है; यह एक पूर्ण संदर्भ अपवाद त्रुटि को फेंक देगा। इसलिए अच्छी कोडिंग प्रैक्टिस convertहमेशा सुरक्षित रहती है।


11
आप उदाहरण के लिए एक छोटा सा अमान्य है क्योंकि int कभी भी अशक्त नहीं हो सकता है
माइकेट

6

आप एक वर्ग बना सकते हैं और toStringअपनी इच्छानुसार कुछ भी करने की विधि को ओवरराइड कर सकते हैं।

उदाहरण के लिए- आप एक क्लास "MyMail" बना सकते हैं और toStringईमेल भेजने की विधि को ओवरराइड कर सकते हैं या करंट ऑब्जेक्ट लिखने के बजाय कुछ अन्य ऑपरेशन कर सकते हैं।

Convert.toStringइसके समकक्ष स्ट्रिंग प्रतिनिधित्व करने के लिए निर्धारित मूल्य से बदल देता है।


2
Convert.ToString वास्तव में एक सुरक्षित तरीका है जो अशक्त के लिए जाँच करता है और यदि मान शून्य नहीं है तो इसे बस ToString विधि कहते हैं। तो किसी भी स्थिति में, यदि आपके पास ToString विधि है, तो आपका overriden ToString विधि कहा जाएगा।
ज़फ़रयूसफ़ी

और यह अशक्त सुरक्षा केवल तभी मदद करती है जब आप कक्षाओं के साथ काम कर रहे हों। मान प्रकार शून्य नहीं हो सकते हैं और इसलिए हम सुरक्षित रूप से उन पर ToString विधि को कॉल कर सकते हैं।
जफरयूसफी

5
object o=null;
string s;
s=o.toString();
//returns a null reference exception for string  s.

string str=convert.tostring(o);
//returns an empty string for string str and does not throw an exception.,it's 
//better to use convert.tostring() for good coding

4

विधियों "मूल रूप से" एक ही है, सिवाय निपटने अशक्त

Pen pen = null; 
Convert.ToString(pen); // No exception thrown
pen.ToString(); // Throws NullReferenceException

MSDN से:
Convert.ToString विधि

निर्दिष्ट मूल्य को इसके समकक्ष स्ट्रिंग प्रतिनिधित्व में परिवर्तित करता है।

Object.ToString

एक स्ट्रिंग रिटर्न जो मौजूदा वस्तु का प्रतिनिधित्व करता है।


"प्रिंट कुछ नहीं"? कुछ भी नहीं है null, ""या "null"?
पश्चिम

3

में Convert.ToString(), कन्वर्ट या तो NULLमान को संभालता है या नहीं, लेकिन .ToString()इसमें NULLमान और NULLसंदर्भ अपवाद की त्रुटि नहीं होती है। इसलिए इसका उपयोग करना अच्छा है Convert.ToString()


3

कोड प्रेमियों के लिए यह सबसे अच्छा जवाब है।

    .............. 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)

1
मैं आपके उत्तर से बहुत संतुष्ट हूँ। इसलिए +1। धन्यवाद।
अशोक कुमार

3

मैं @ रयान के जवाब से सहमत हूं । वैसे, इस उद्देश्य के लिए आप C # 6.0 से शुरू कर सकते हैं:

someString?.ToString() ?? string.Empty;

या

$"{someString}"; // I do not recommend this approach, although this is the most concise option.

के बजाय

Convert.ToString(someString);

2

ToString()अशक्त मूल्यों को संभाल नहीं सकते हैं और convert.ToString()उन मूल्यों को संभाल सकते हैं जो अशक्त हैं, इसलिए जब आप चाहते हैं कि आपका सिस्टम अशक्त मूल्य उपयोग को संभाल ले convert.ToString()


2

Convert.ToString(strName)अशक्त मानों strName.Tostring()को संभालेगा और अशक्त मान को नहीं संभालेगा और एक अपवाद को फेंक देगा।

तो यह बेहतर है का उपयोग करने के Convert.ToString()तो.ToString();


2
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()
Fabio

0

दोनों तरीकों को समझने के लिए एक उदाहरण लेते हैं:

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.

0

Convert.ToString(value)पहले IConvertible , फिर IFormattable इसी ToString(...)तरीकों को कॉल करने के लिए कास्टिंग obj की कोशिश करता है । यदि इसके बजाय पैरामीटर मान था nullतो वापस आ गया string.Empty। अंतिम उपाय के रूप में, obj.ToString()अगर कुछ और काम नहीं करता है

यह ध्यान देने योग्य है कि Convert.ToString(value) कर सकते हैं वापसी nullउदाहरण के लिए यदि value.ToString()रिटर्न अशक्त।

.Net संदर्भ स्रोत देखें


0

मैंने इस कोड को लिखा और संकलित किया।

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 ()' तेज है।

Object.ToString विधि :

class System.Object
{
    public string ToString(IFormatProvider provider)
    {
        return Number.FormatInt32(this, null, NumberFormatInfo.GetInstance(provider));
    }
}

Conver.ToString विधि :

class System.Convert
{
    public static string ToString(object value)
    {
        return value.ToString(CultureInfo.CurrentCulture);
    }
}

0

C # में यदि आप एक स्ट्रिंग चर घोषित करते हैं और यदि आप उस चर का कोई मान निर्दिष्ट नहीं करते हैं, तो डिफ़ॉल्ट रूप से वह चर शून्य मान लेता है। ऐसी स्थिति में, यदि आप ToString () विधि का उपयोग करते हैं तो आपका प्रोग्राम अशक्त संदर्भ अपवाद को फेंक देगा। दूसरी ओर, यदि आप Convert.ToString () विधि का उपयोग करते हैं तो आपका प्रोग्राम अपवाद नहीं करेगा।


0
  • Convert.Tostring() मूल रूप से सिर्फ निम्नलिखित कहते हैं value == null ? String.Empty: value.ToString()

  • (string)variableकेवल तभी डालेगा जब आप जो कास्टिंग कर रहे हैं उस पर कोई निहित या स्पष्ट ऑपरेटर हो

  • ToString()प्रकार से ओवरराइड किया जा सकता है (इसका इस पर नियंत्रण है कि यह क्या करता है), यदि यह प्रकार के नाम पर परिणाम नहीं देता है

जाहिर है कि अगर कोई वस्तु अशक्त है , तो आप उदाहरण सदस्य तक नहीं पहुँच सकते ToString(), यह एक अपवाद का कारण होगा


-1

Convert.Tostring () फ़ंक्शन NULL को संभालता है जबकि .Toring () विधि नहीं करती है। यहाँ जाएँ ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.