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

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

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

最佳答案

不,不是。它完全基于编译时评估。

您可以使用此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/

10-10 21:41