The interpolated strings are interpreted by the compiler. I.e., for example in
string a = "fox";
string b = "jumps over";
// this line ...
string s = $"The quick brown {a} {b} the lazy dog";
... is converted to
string s = String.Format("The quick brown {0} {1} the lazy dog", a, b);
... by the compiler.
Therefore, you cannot use string interpolation at runtime with variable names in a (regular) string.
You must use String.Format
at runtime:
string a = "The quick brown {0} {1} the lazy dog";
string b = "fox;jumps over";
string[] split = b.Split(';');
string c = String.Format(a, split[0], split[1]);
Console.Writeline(c):
Note that a runtime, the names of the local variables are not known. If you decompile a compiled C# programm, the decompiled code will contain generic names for local variables like l1
, l2
etc. (depending on the decompiler).