For example I have a string that was retrieved from the database.
string a = "The quick brown {Split[0]} {Split[1]} the lazy dog";
string b = "jumps over";
And then I will perform this code.
String[] Split= b.Split(' ');
String c= $"{a}";
Console.Writeline(c):
This method is not working. Do you have any idea how can this become possible? I appreciate your help. ^-^
CodePudding user response:
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).
CodePudding user response:
As LasseV.Karlsen and Hans Kesting
has explained you can use string.Format
in this scenario. Let me give you a quick example:
string b = "jumps over";
string[] Split = b.Split(' ');
string c = string.Format("The quick brown fox {0} {1} the lazy dog.",Split[0], Split[1]);
Console.WriteLine(c);
Note that this is just one example with string.Format
while there exist countless other uses for the same. Your best resource to learn more about this method could be Microsoft Documentation.