web-dev-qa-db-fra.com

Différence entre Convert.ToString () et .ToString ()

Quelle est la différence entre Convert.ToString() et .ToString()?

J'ai trouvé beaucoup de différences en ligne, mais quelle est la différence majeure?

142
TinTin

Convert.ToString() gère null, alors que ToString() ne le fait pas.

207
Ryan

L'appel de ToString() sur un objet suppose que l'objet n'est pas null (puisqu'un objet doit exister pour appeler une méthode d'instance sur celui-ci). Convert.ToString(obj) n'a pas besoin de présumer que l'objet n'est pas null (puisqu'il s'agit d'une méthode statique sur la classe Convert), mais renvoie plutôt String.Empty s'il est null.

56
Chris Dwyer

Outre d'autres réponses sur la gestion des valeurs null, Convert.ToString tente d'utiliser les interfaces IFormattable et IConvertible avant d'appeler la base Object.ToString.

Exemple:

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();
    }
}

Résultat:

Convert.ToString(new FormattableType()); // 0.42
new FormattableType().ToString();        // 0,42
18
Alexander

Permet de comprendre la différence via cet exemple:

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

Nous pouvons convertir l'entier i en utilisant i.ToString () ou Convert.ToString. Alors quelle est la différence? 

La différence fondamentale entre eux est que la fonction Convert traite NULLS alors que i.ToString () n'en a pas; il générera une erreur d'exception de référence NULL. Donc, une bonne pratique de codage utilisant convert est toujours sûre.

10
Swati

Vous pouvez créer une classe et remplacer la méthode toString pour faire tout ce que vous voulez.

Par exemple, vous pouvez créer une classe "MyMail" et remplacer la méthode toString pour envoyer un courrier électronique ou effectuer une autre opération au lieu d'écrire l'objet actuel.

Le Convert.toString convertit la valeur spécifiée en sa représentation sous forme de chaîne équivalente.

6
user2039962
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
5
sudeep

Les méthodes sont "fondamentalement" identiques, sauf manipulant null.

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

De MSDN:
Méthode Convert.ToString

Convertit la valeur spécifiée en sa représentation sous forme de chaîne équivalente.

Object.ToString

Retourne une chaîne qui représente l'objet actuel.

4
hdoghmen

Pour les amateurs de code c'est la meilleure réponse.

    .............. 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)
3
Abdul Saboor

Dans Convert.ToString(), le convertisseur gère une valeur NULL ou non, mais dans .ToString(), il ne gère pas une valeur NULL et une erreur d'exception de référence NULL. Il est donc de bonne pratique d’utiliser Convert.ToString().

3
Ajay Saini

Je suis d’accord avec la réponse de @ Ryan . Soit dit en passant, à partir de C # 6.0, vous pouvez utiliser:

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

ou

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

au lieu de

Convert.ToString(someString);
3
AndreyWD

Convert.ToString(strName) gérera les valeurs NULL et strName.Tostring() ne gérera pas les valeurs NULL et lèvera une exception.

Donc, il vaut mieux utiliser Convert.ToString() que .ToString();

2

ToString() ne peut pas gérer les valeurs NULL et convert.ToString() peut gérer les valeurs NULL. Par conséquent, lorsque vous souhaitez que votre système gère les valeurs NULL, utilisez convert.ToString()

2
viplov
ToString() Vs Convert.ToString()

Similitudes :-

Les deux sont utilisés pour convertir un type spécifique en chaîne i.e int en chaîne, float en chaîne ou un objet en chaîne.

Différence :-

ToString() ne peut pas gérer null alors que dans le cas où Convert.ToString() gérera une valeur null.

Exemple :

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.
        }
    }
}
2
Johnny

j'ai écrit ce code et le compiler.

class Program
{
    static void Main(string[] args)
    {
        int a = 1;
        Console.WriteLine(a.ToString());
        Console.WriteLine(Convert.ToString(a));
    }
}

en utilisant le 'reverse engineering' ( ilspy ), je découvre 'object.ToString ()' et 'Convert.ToString (obj)' font exactement une chose. 'object.ToString ()' donc 'object.ToString ()' est plus rapide.

Méthode Object.ToString :

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

Méthode Conver.ToString :

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

Convert.ToString(value) tente d’abord de convertir obj en IConvertible , puis IFormattable d’appeler les méthodes ToString(...) correspondantes. Si, au lieu de cela, la valeur du paramètre était null, retournez string.Empty. En dernier recours, retournez obj.ToString() si rien d'autre ne fonctionne.

Il est à noter que Convert.ToString(value)can peut renvoyer null si, par exemple, value.ToString() renvoie null.

Voir Source de référence .Net

0
Konstantin Spirin

La fonction Convert.Tostring () gère la valeur NULL, contrairement à la méthode .ToString (). visiter ici .

0
user632299

Pour comprendre les deux méthodes, prenons un exemple: 

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

Ici, les deux méthodes sont utilisées pour convertir la chaîne, mais la différence fondamentale entre elles est la suivante: Convert fonction gère NULL, alors que i.ToString() ne le fait pas, elle jette un NULL reference exception error. Donc, une bonne pratique de codage utilisant convert est toujours sûre.

Voyons un autre exemple: 

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
Yogesh Patel