0

例如,我有一个从数据库中检索到的字符串。

string a = "The quick brown {Split[0]}   {Split[1]} the lazy dog";
string b = "jumps over";

然后我将执行此代码。

String[] Split= b.Split(' ');
String c= $"{a}";
Console.Writeline(c):

这种方法不起作用。你知道这怎么可能吗?我感谢您的帮助。^-^

4

2 回答 2

3

内插字符串由编译器解释。即,例如在

string a = "fox";
string b = "jumps over";

// this line ...
string s = $"The quick brown {a} {b} the lazy dog";

...转换为

string s = String.Format("The quick brown {0} {1} the lazy dog", a, b);

...由编译器。

因此,您不能在运行时将字符串插值与(常规)字符串中的变量名一起使用。

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).

于 2021-11-11T18:36:47.850 回答
0

正如 LasseV.Karlsen 和 Hans Kesting 所解释的,您可以string.Format在这种情况下使用。让我给你一个简单的例子:

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);

请注意,这只是一个示例,string.Format虽然还有无数其他用途。了解有关此方法的更多信息的最佳资源可能是Microsoft 文档

于 2021-11-11T18:32:04.887 回答