Xas*_*ser 8 c# string-interpolation c#-6.0
简短而简单.C#6.0中的新字符串插值是否依赖于反射?即
string myStr = $"Hi {name}, how are you?";
Run Code Online (Sandbox Code Playgroud)
在运行时使用反射来查找变量"name"及其值?
i3a*_*non 19
不,它没有.它完全基于编译时评估.
你可以看到这个TryRoslyn示例编译和反编译:
int name = 4;
string myStr = $"Hi {name}, how are you?";
Run Code Online (Sandbox Code Playgroud)
进入:
int num = 4;
string.Format("Hi {0}, how are you?", num);
Run Code Online (Sandbox Code Playgroud)
字符串插值也支持使用IFormattable
结果(再次使用TryRoslyn):
int name = 4;
IFormattable myStr = $"Hi {name}, how are you?";
Run Code Online (Sandbox Code Playgroud)
变成这样:
int num = 4;
FormattableStringFactory.Create("Hi {0}, how are you?", new object[] { num });
Run Code Online (Sandbox Code Playgroud)