那么这个时候我们可以用到内插字符串深层的特性,C# 会把内插字符串的结果隐式的转换成 string 或者 FormattableString 。 例如下面这个例子,内插字符串的结果将是 string 类型: string message = $"我的名字叫 {name} "; 下面这段代码内插字符串的结果将会被转换为 FormattableString 对象: FormattableString message= $"我的名字叫 {name} "; 当我们声明隐式类型的局部变量,并将内插字符串的结果赋值给它时,实际上内插字符串的结果会隐式转换为 string public static string ToGerman(FormattableString fts) { return string.Format(null,System.Globalization ("de-de"),fts.Format.fts.GetArguments()); } 上述代码我们定义一个将字符串转换为德语格式的方法,它接受一个类型为 FormattableString 的参数,返回一个字符串
"; 10 //支持的隐式类型转换 11 IFormattable s5 = $"Hello, {person.Name}"; 12 FormattableString s6 = $"Hello, {person.Name IFormattable的隐式转换,编译结果是利用 System.Runtime.CompilerServices.FormattableStringFactory.Create 这个静态方法构造一个 FormattableString string csharp6.Person::get_Name() 9 IL_00aa: stelem.ref 10 IL_00ab: call class [mscorlib]System.FormattableString string csharp6.Person::get_Name() 21 IL_00c5: stelem.ref 22 IL_00c6: call class [mscorlib]System.FormattableString
double speedOfLight = 299792.458; FormattableString message = $"光速是 {speedOfLight:N3} km/s. "; string messageInInvariantCulture = FormattableString.Invariant(message); Console.WriteLine(messageInInvariantCulture
throw new global::Microsoft.Extensions.Http.AutoClient.AutoClientException(global::System.FormattableString.Invariant throw new global::Microsoft.Extensions.Http.AutoClient.AutoClientException(global::System.FormattableString.Invariant throw new global::Microsoft.Extensions.Http.AutoClient.AutoClientException(global::System.FormattableString.Invariant
请利用通过字符串内插生成的对象可以隐式转换为 System.FormattableString 这一事实。 FormattableString 实例包含组合格式字符串,以及在将其转换为字符串之前评估表达式的结果。 在设置字符串的格式时,可以使用 FormattableString.ToString(IFormatProvider) 方法指定区域性。 下面的示例使用德语 (de-DE) 区域性生成字符串。 FormattableString str = $"Average grade is {s.Grades.Average()}"; var gradeStr = str.ToString(new System.Globalization.CultureInfo
这里需要注意的是插值字符串格式化的时候会使用当前的CultureInfo,如果我们需要使用不同的CultureInfo或手动指定CultureInfo,那么可以使用FormattableString或FormattableStringFactory 代码如下会根据指定的CultureInfo显示出不同的数字格式: var id=35000; FormattableString str1 = $"id是{id}"; Console.WriteLine
PubTime, Price,{aName} from T_Books where Price > {price}"); 字符串内插 如果赋值给string变量,就是字符串拼接;字符串内插如果赋值给FormattableString 变量,编译器就会构造FormattableString对象。 ExecuteSqlInterpolatedAsync()的参数是FormattableString类型。
Console.ReadLine();//当前用户 using var ctx = new MyDBContext(); using var tx = ctx.Database.BeginTransaction(); FormattableString