c# string performance resharper string-interpolation

c# - String Interpolation vs String.Format



performance resharper (2)

¿Existe una diferencia de rendimiento notable entre el uso de la interpolación de cadenas:

myString += $"{x:x2}";

vs String.Format ()?

myString += String.Format("{0:x2}", x);

Solo pregunto porque Resharper está solicitando la solución, y ya me han engañado antes.


La interpolación de cadenas se convierte en string.Format () en tiempo de compilación.

También en string.Format puede especificar varias salidas para un solo argumento, y diferentes formatos de salida para un solo argumento. Pero la interpolación de cadenas es más legible, supongo. Eso depende de ti.

a = string.Format("Due date is {0:M/d/yy} at {0:h:mm}", someComplexObject.someObject.someProperty); b = $"Due date is {someComplexObject.someObject.someProperty:M/d/yy} at {someComplexObject.someObject.someProperty:h:mm}";

Hay algunos resultados de la prueba de rendimiento https://koukia.ca/string-interpolation-vs-string-format-string-concat-and-string-builder-performance-benchmarks-c1dad38032a


Notable es relativo. Sin embargo: la interpolación de cadenas se convierte en string.Format() en tiempo de compilación, por lo que deberían terminar con el mismo resultado.

Sin embargo, existen diferencias sutiles: como podemos deducir de this pregunta, la concatenación de cadenas en el especificador de formato da como resultado una string.Concat() adicional de string.Concat() .