longitud - ¿Cuál es la cultura por defecto para la interpolación de cadenas C#6?
string format c# (1)
El uso de la interpolación de cadenas en C # se compila en una simple llamada a String.Format
. Puedes ver con TryRolsyn que esto:
public void M()
{
string name = "bar";
string result = $"{name}";
}
Se compila en esto:
public void M()
{
string arg = "bar";
string text = string.Format("{0}", arg);
}
Está claro que esto no utiliza una sobrecarga que acepta un proveedor de formato, por lo tanto, utiliza la cultura actual .
Sin embargo, puede compilar la interpolación en FormattbleString
que mantiene el formato y los argumentos separados y pasa una cultura específica al generar la cadena final:
FormattableString formattableString = $"{name}";
string result = formattableString.ToString(CultureInfo.InvariantCulture);
Ahora ya que (como prefiera) es muy común utilizar InvariantCulture
específicamente, hay una forma abreviada de eso:
string result = FormattableString.Invariant($"{name}");
En C # 6, ¿cuál es la cultura por defecto para la nueva interpolación de cadenas?
He visto informes contradictorios tanto de la cultura invariante como de la actual.
Me gustaría una respuesta definitiva y estoy cruzando los dedos por Invariant.