Zweck von String.Concat (Object) anstelle von String.Concat (String)

8

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?

%Vor%

Gibt uns die folgende IL.

%Vor%     
John Doe 31.07.2015, 07:45
quelle

2 Antworten

3

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.

    
Patrick Hofman 31.07.2015 07:49
quelle
0

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.

    
Joel Legaspi Enriquez 31.07.2015 07:57
quelle

Tags und Links