c# - C# 6.0 的字符串插值是否依赖于反射?

标签 c# string-interpolation c#-6.0

简短而简单。 C# 6.0 中新的字符串插值是否依赖于反射? IE。做

string myStr = $"Hi {name}, how are you?";

在运行时使用反射来查找变量“name”及其值?

最佳答案

没有。它没有。它完全基于编译时评估。

你可以用这个 TryRoslyn example 看到编译和反编译这个:

int name = 4;
string myStr = $"Hi {name}, how are you?";

进入这个:

int num = 4;
string.Format("Hi {0}, how are you?", num);

字符串插值还支持使用 IFormattable 作为结果,因此 (again using TryRoslyn) 如下:

int name = 4;
IFormattable myStr = $"Hi {name}, how are you?";

变成这样:

int num = 4;
FormattableStringFactory.Create("Hi {0}, how are you?", new object[] { num });

关于c# - C# 6.0 的字符串插值是否依赖于反射?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31359360/

相关文章:

C# Visual Studio 2010 嵌入 exe 图标

c# - VS 2015 中字符串插值的最终格式是什么?

c# - 在 C#6.0 中编码但针对 .NET 2.0 进行编译的缺点

.net - TFS 2013建筑.NET 4.6/C#6.0

c# - 使用空传播时出现 NullReferenceException

c# - 有没有办法全局设置 DateTime.ToString() 格式?

java - 将c#函数代码转换为java

arrays - 将变量传递给 YAML 数组

c# - 'System.Int32' 类型的对象无法转换为 'System.Web.Security.Cryptography.Purpose' 类型

Swift 中的字符串插值