Does C# 6.0's String interpolation rely on Reflection?

c#, c#-6.0, string-interpolation

Solution

No. It doesn't. It is completely based on compile-time evaluation.

You can see that with this TryRoslyn example that compiles and decompiles this:

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

Into this:

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

string interpolation also supports using `IFormattable` as the result so (again using TryRoslyn) this:

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

Turns into this:

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

Problem

Short and simple. Does the new string interpolation in C# 6.0 rely on reflection? I.e. does ``` string myStr = $"Hi {name}, how are you?"; ``` use reflection at runtime to find the variable "name" and its value?

Original source