Die vorhandenen Antworten sprechen darüber, dass es sich um ein C# 6-Feature ohne eine .NET Framework-Komponente handelt.
Dies gilt vollständig für nameof
- aber nur etwas wahr der String-Interpolation.
String Interpolation wird string.Format
in den meisten Fällen verwenden, aber wenn Sie .NET 4.6 verwendet, kann es auch eine interpoliert String in eine FormattableString
, konvertieren, die nützlich ist, wenn Sie invariant Formatierung wollen:
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
}
}
Offensichtlich würde dies nicht funktionieren, wenn einfach einen Aufruf an string.Format
aufgerufen ... statt, in diesem Fall nennt es string.Format
in der Erklärung zu local
Zuordnung und fordert FormattableStringFactory.Create
in der Erklärung zu invariant
Zuordnung und fordert FormattableString.Invariant
auf dem Ergebnis. Wenn Sie versuchen, dies mit einer früheren Version des Frameworks zu kompilieren, wird FormattableString
nicht vorhanden sein, damit es nicht kompiliert wird. Sie können Ihre eigene Implementierung von FormattableString
und FormattableStringFactory
bereitstellen, wenn Sie wirklich möchten, und der Compiler wird sie entsprechend verwenden.
Siehe [Entwirren Sie die Versionen] (http://csharpindepth.com/Articles/Chapter1/Versions.aspx) von Jon Skeet. Es deckt zwar nicht C# 6.0 ab, aber das Konzept ist dasselbe. – Habib