Le risposte esistenti parlano di questa funzione C# 6 senza un componente .NET Framework.
Questo è interamente vero per nameof
- ma solo un po ' true di interpolazione stringa.
String interpolazione utilizzerà string.Format
nella maggior parte dei casi, ma se si sta utilizzando .NET 4.6, può anche convertire una stringa interpolato in una FormattableString
, che è utile se si desidera la formattazione invariante:
using System;
using System.Globalization;
using static System.FormattableString;
class Test
{
static void Main()
{
CultureInfo.CurrentCulture = CultureInfo.CreateSpecificCulture("fr-FR");
double d = 0.5;
string local = $"{d}";
string invariant = Invariant($"{d}");
Console.WriteLine(local); // 0,5
Console.WriteLine(invariant); // 0.5
}
}
Ovviamente questo non funzionerebbe se semplicemente invocato una chiamata a string.Format
... invece, in questo caso si chiama string.Format
nella dichiarazione assegnando a local
e chiede FormattableStringFactory.Create
nella dichiarazione assegnando a invariant
e chiede FormattableString.Invariant
sul risultato. Se si tenta di compilarlo con una versione precedente del framework, FormattableString
non esiste, quindi non verrà compilato. È possibile fornire la propria implementazione di FormattableString
e FormattableStringFactory
se si desidera, tuttavia, e il compilatore li utilizzerà in modo appropriato.
fonte
2016-01-18 16:47:41
Vedere [Untangling the Versions] (http://csharpindepth.com/Articles/Chapter1/Versions.aspx) di Jon Skeet. Anche se non copre C# 6.0 ma il concetto è lo stesso. – Habib