【发布时间】:2015-07-11 16:35:10
【问题描述】:
简短而简单。 C# 6.0 中的新字符串插值是否依赖反射? IE。会
string myStr = $"Hi {name}, how are you?";
在运行时使用反射来查找变量“name”及其值?
【问题讨论】:
-
为什么需要?编译器拥有它需要的所有信息。如果变量名
name在作用域内,就会被使用,否则会报错。 -
我不知道,这就是我问的原因。我不确定格式字符串是否“按原样”保存在二进制文件中,然后会填充空白(在经典情况下 {0} 等带有变量)。如果是这样的话,那就得使用反射了,但我不知道编译器是如何处理这些语句的
-
我不知道,但我肯定会偷看诸如 dotPeek 之类的反编译器,看看发生了什么
-
你可以推理出来,反射无法在字符串文字上检测到
$。只有编译器可以看到它。它告诉它解析字符串,在字符串中查找{identifier}并生成适当的 String.Format() 语句。
标签: c# string-interpolation c#-6.0