123 votes

Comment faire ToString pour un objet éventuellement nul ?

Existe-t-il une façon simple de faire ce qui suit :

String s = myObj == null ? "" : myObj.ToString();

Je sais que je peux faire ce qui suit, mais je le considère vraiment comme un hack :

String s = "" + myObj;

Ce serait génial si Convert.ToString () avait une surcharge appropriée pour cela.

42voto

Holstebroe Points 1882
string.Format("{0}", myObj);

string.Format formatera NULL comme une chaîne vide et appellera ToString() sur les objets non NULL. Si je comprends bien, c'est ce que vous cherchiez.

22voto

Rob Gilliam Points 540

Ce serait génial si Convert.ToString () avait une surcharge appropriée pour cela.

Il y a eu un Convert.ToString(Object value) depuis .Net 2.0 (environ 5 ans avant que ce Q ne soit demandé), ce qui semble faire exactement ce que vous voulez :

http://msdn.microsoft.com/fr-fr/library/astxcyeh(v=vs.80).aspx

Est-ce que j'ai raté/mal interprété quelque chose de vraiment évident ici ?

16voto

Pieter van Ginkel Points 17057

Avec une méthode d'extension, vous pouvez accomplir ceci :

public static class Extension
{
    public static string ToStringOrEmpty(this Object value)
    {
        return value == null ? "" : value.ToString();
    }
}

Ce qui suit n'écrirait rien à l'écran et ne lancerait pas d'exception :

        string value = null;

        Console.WriteLine(value.ToStringOrEmpty());

8voto

steinar Points 4762

Je ne suis pas d'accord avec ceci :

String s = myObj == null ? "" : myObj.ToString();

est un hack en tout cas. Je pense que c'est un bon exemple de code clair. C'est absolument évident ce que vous voulez accomplir et que vous attendez nul.

MISE À JOUR :

Je vois maintenant que vous ne disiez pas que c'était un piratage. Mais c'est implicite dans la question que vous pensez que ce n'est pas la voie à suivre. Dans mon esprit, c'est certainement la solution la plus claire.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X