Basiert die String-Interpolation von C # 6.0 auf Reflection?

8

Kurz und einfach. Ist die neue String-Interpolation in C # 6.0 auf Reflektion angewiesen? I.e. tut

%Vor%

Verwenden Sie die Reflektion zur Laufzeit, um die Variable "name" und ihren Wert zu finden?

    
Xaser 11.07.2015, 16:35
quelle

2 Antworten

18

Nein. Es tut es nicht. Es basiert vollständig auf der Kompilierzeit Auswertung.

Sie können mit diesem TryRoslyn Beispiel sehen, dass dass kompiliert und dekompiliert folgt aus:

%Vor%

Dazu:

%Vor%

string Interpolation unterstützt IFormattable als Ergebnis unter Verwendung von so ( wieder TryRoslyn Verwendung ) das:

%Vor%

Verwandelt sich dazu:

%Vor%     
i3arnon 11.07.2015, 16:39
quelle
3

In diesem Artikel wird erklärt, dass es kompilierzeitbasiert (und intern) ist ruft string.Format() auf. Ein Zitat:

  

Die Zeichenfolgeninterpolation wird zur Kompilierzeit umgewandelt, um eine äquivalente Zeichenfolge aufzurufen.Formataufruf. Dies lässt die Unterstützung für die Lokalisierung wie zuvor (obwohl immer noch mit zusammengesetzten Formatzeichenfolgen) und führt keine Post-Compile-Injektion von Code über Zeichenfolgen ein.

    
brazilianldsjaguar 11.07.2015 16:47
quelle

Tags und Links