Строка с форматом интерполяции строк из базы данных, используйте ее в коде C#

Например, у меня есть строка, полученная из базы данных.

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

Этот метод не работает. Вы хоть представляете, как это стало возможным? Я ценю вашу помощь. ^-^

2 ответа

Интерполированные строки интерпретируются компилятором. Т.е. например в

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

... компилятором.

Поэтому вы не можете использовать интерполяцию строк во время выполнения с именами переменных в (обычной) строке.

Вы должны использовать String.Formatво время выполнения:

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

Обратите внимание, что во время выполнения имена локальных переменных неизвестны. Если вы декомпилируете скомпилированную программу на С#, декомпилированный код будет содержать общие имена для локальных переменных, например l1, l2и т.д. (в зависимости от декомпилятора).

Как объяснили LasseV.Karlsen и Hans Kefing, вы можете использовать в этом сценарии. Позвольте мне привести вам быстрый пример:

      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 .

Другие вопросы по тегам