Was ist der Zweck der Verwendung von String.Concat(Object)
anstelle von String.Concat(String)
in C #? Warum sollte man nicht einfach einen impliziten Aufruf von Object.ToString()
verwenden, anstatt eine object
selbst zu übergeben, die auch dazu führen kann, dass Boxen passiert?
Gibt uns die folgende IL.
%Vor%Warum sollte der Compiler das tun? Es kann nicht.
Wenn Sie ein Objekt übergeben (in diesem Fall ein eingerahmtes int
), besteht die einzige Möglichkeit für den Compiler darin, string.Concat(object, object)
aufzurufen. Es kann nicht string.Concat(string, string)
aufgerufen werden, da nicht beide Parameter ein string
sind und somit der zweiten Überladung entsprechen.
Stattdessen ruft es string.Concat(object, object)
auf und fügt gegebenenfalls ToString
ein.
Sie als Entwickler wissen genau, wie die Methode string.Concat
funktioniert. Der Compiler weiß nicht, dass es schließlich ein string
wird.
Was würde auch passieren, wenn eines der object
s null
ist? Das ToString
wird mit einer Ausnahme fehlschlagen. Das ergibt keinen Sinn. Geben Sie einfach object
ein und lassen Sie den Code damit umgehen.
Referenzquelle: Ссылка
Zeigt Folgendes:
%Vor% Er erstellt einfach eine String-Repräsentation dieses Objekts. Jedes Objekt, das Sie übergeben, wird in String
konvertiert. String.Empty
, wenn es null ist. Ich denke, dies erspart uns auch die Überprüfung des "Null" -Objekts, bevor es in string
konvertiert wird.