Was ist der Unterschied zwischen Convert.ToString()
und .ToString()
?
Ich habe online viele Unterschiede gefunden, aber was ist der Hauptunterschied?
c#
type-conversion
tostring
TinTin
quelle
quelle
Antworten:
Convert.ToString()
Griffenull
, währendToString()
nicht.quelle
null
eine leere Zeichenfolge zurückgeben oder eine Ausnahme auslösen? Es ist wie der Unterschied zwischen Casting und Verwendungas
: stille Konvertierung.Das Aufrufen
ToString()
eines Objekts setzt voraus, dass das Objekt nicht null ist (da ein Objekt vorhanden sein muss, um eine Instanzmethode darauf aufzurufen).Convert.ToString(obj)
das Objekt nicht vermuten müssen , ist nicht null (wie es eine statische Methode auf der Convert - Klasse ist), sondern wird wieder ,String.Empty
wenn es ist null.quelle
Convert.ToString(string value)
Gibt zurück,null
wenn das Argument lautetnull
.Convert.ToString(object value)
Gibt zurück,String.Empty
wenn das Argument lautetnull
.Zusätzlich zu anderen Antworten zum Umgang mit
null
Werten werdenConvert.ToString
VersucheIFormattable
undIConvertible
Schnittstellen vor dem Aufruf von base ausgeführtObject.ToString
.Beispiel:
Ergebnis:
quelle
IConvertible
hat Vorrang vorIFormattable
, was wiederum Vorrang vor nimmtObject.ToString()
Umsetzung.Lassen Sie uns den Unterschied anhand dieses Beispiels verstehen:
Wir können die ganze Zahl
i
miti.ToString ()
oder konvertierenConvert.ToString
. Was ist der Unterschied?Der grundlegende Unterschied zwischen ihnen besteht darin, dass die
Convert
Funktion NULLS verarbeitet, währendi.ToString ()
dies nicht der Fall ist. Es wird ein NULL-Referenzausnahmefehler ausgegeben. So ist eine gute Codierungspraxisconvert
immer sicher.quelle
Sie können eine Klasse erstellen und die
toString
Methode überschreiben , um alles zu tun, was Sie wollen.Sie können beispielsweise eine Klasse "MyMail" erstellen und die
toString
Methode zum Senden einer E-Mail überschreiben oder eine andere Operation ausführen, anstatt das aktuelle Objekt zu schreiben.Der
Convert.toString
konvertiert den angegebenen Wert in seine entsprechende Zeichenfolgendarstellung.quelle
quelle
Die Methoden sind "im Grunde" gleich, außer dass sie mit null umgehen .
Von MSDN:
Convert.ToString-Methode
Object.ToString
quelle
null
,""
Oder"null"
?In verarbeitet
Convert.ToString()
die Konvertierung entweder einenNULL
Wert oder nicht, behandelt.ToString()
jedoch keinenNULL
Wert und keinenNULL
Referenzausnahmefehler. Es ist also in der guten Praxis zu verwendenConvert.ToString()
.quelle
Für Code-Liebhaber ist dies die beste Antwort.
quelle
Ich stimme der Antwort von @ Ryan zu . Übrigens, beginnend mit C # 6.0 für diesen Zweck können Sie Folgendes verwenden:
oder
anstatt
quelle
ToString()
kann keine Nullwerte verarbeiten undconvert.ToString()
kann Werte verarbeiten, die null sind. Wenn Sie also möchten, dass Ihr System die Verwendung von Nullwerten verarbeitetconvert.ToString()
.quelle
Convert.ToString(strName)
behandelt nullfähige Werte und behandeltstrName.Tostring()
keinen nullwert und löst eine Ausnahme aus.Also ist es besser,
Convert.ToString()
dann zu verwenden.ToString();
quelle
Beide werden verwendet, um einen bestimmten Typ in einen String zu konvertieren, dh int in string, float in string oder ein Objekt in string.
ToString()
kann nicht mit null umgehen, während in dem Fall mitConvert.ToString()
null Wert behandelt wird.Beispiel:
quelle
Convert.ToString
nicht handhabenNull Exception
. es einfach tun:return value == null ? string.Empty : value.ToString()
Um beide Methoden zu verstehen, nehmen wir ein Beispiel:
Hier werden beide Methoden verwendet, um die Zeichenfolge zu konvertieren, aber der grundlegende Unterschied zwischen ihnen ist:
Convert
FunktionshandlesNULL
, währendi.ToString()
dies nicht der Fall ist.NULL reference exception error.
So ist eine gute Codierungspraxisconvert
immer sicher.Sehen wir uns ein anderes Beispiel an:
quelle
Convert.ToString(value)
versucht zuerst, obj in IConvertible umzuwandeln , dann IFormattable , um entsprechendeToString(...)
Methoden aufzurufen . Wenn stattdessen wurde der Parameterwertnull
dann zurückstring.Empty
. Als letztes Mittel kehren Sie zurück,obj.ToString()
wenn nichts anderes funktioniert hat.Es ist erwähnenswert, dass zurückgegeben werden
Convert.ToString(value)
kann ,null
wenn beispielsweisevalue.ToString()
null zurückgegeben wird.Siehe .Net-Referenzquelle
quelle
Ich habe diesen Code geschrieben und kompiliert.
Mit 'Reverse Engineering' ( ilspy ) finde ich heraus, dass 'object.ToString ()' und 'Convert.ToString (obj)' genau eines tun. infact 'Convert.ToString (obj)' call 'object.ToString ()' also 'object.ToString ()' ist schneller.
quelle
Wenn Sie in C # eine Zeichenfolgenvariable deklarieren und dieser Variablen keinen Wert zuweisen, nimmt diese Variable standardmäßig einen Nullwert an. Wenn Sie in einem solchen Fall die ToString () -Methode verwenden, löst Ihr Programm die Nullreferenzausnahme aus. Wenn Sie dagegen die Convert.ToString () -Methode verwenden, löst Ihr Programm keine Ausnahme aus.
quelle
Convert.Tostring()
ruft im Grunde nur folgendes aufvalue == null ? String.Empty: value.ToString()
(string)variable
wird nur gewirkt, wenn es einen impliziten oder expliziten Operator für das gibt, was Sie gießenToString()
kann durch den Typ überschrieben werden (er hat die Kontrolle darüber, was er tut), wenn nicht, ergibt sich der Name des TypsWenn ein Objekt null ist und Sie nicht auf das Instanzmitglied zugreifen können
ToString()
, führt dies natürlich zu einer Ausnahmequelle
Die Funktion Convert.Tostring () behandelt NULL, die Methode .ToString () jedoch nicht. hier besuchen .
quelle