Varolan yanıtlar, .NET framework bileşeni olmayan bir C# 6 özelliği hakkında konuşuyor.
Bu, nameof
için geçerlidir, ancak yalnızca biraz, dize enterpolasyonu için doğrudur.
dize enterpolasyon çoğu durumda string.Format
kullanacaktır, ancak .NET 4.6 kullanıyorsanız eğer değişmez biçimlendirme istiyorsanız, da yararlı bir FormattableString
, içine bir interpolated dizeyi dönüştürebilirsiniz:
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
}
}
basitçe
string.Format
bir çağrı çağrılan eğer
Açıkçası bu yerine ... işe yaramaz, bu durumda local
için atama açıklamada string.Format
çağırır ve invariant
için atama açıklamada FormattableStringFactory.Create
çağırır ve üzerinde FormattableString.Invariant
çağırır sonuç. Bunu, çerçevenin önceki bir sürümüyle derlemeyi denerseniz, FormattableString
bulunmayacak ve bu yüzden derlenmeyecektir. Gerçekten isterseniz, FormattableString
ve FormattableStringFactory
kendi uygulamanızı sağlayabilirsiniz ve derleyici bunları uygun şekilde kullanacaktır.
Jon Skeet tarafından bkz. [Sürümlerin Untangling'i] (http://csharpindepth.com/Articles/Chapter1/Versions.aspx). Her ne kadar C# 6.0 kapsamaz ama kavram aynıdır. – Habib