C#: условное форматирование строки интерполированной строкиC#

Место общения программистов C#
Ответить
Anonymous
 C#: условное форматирование строки интерполированной строки

Сообщение Anonymous »

Возможно ли в C# иметь форматирование строки интерполированной строки, которую нужно выполнять, только если она требуется? >

Код: Выделить всё

public class Program
{
private static bool isLoggingEnabled = true;

public static void Main()
{
string name = "John";
Log("Hello {0}!", name);
Log($"Hello {name}!");
}

private static void Log(string formatString, params object?[] formatStringArguments)
{
if (isLoggingEnabled)
{
Console.WriteLine(string.Format(formatString, formatStringArguments));
}
}
}
Первый log () метод вызов пропускает строку формата, и поэтому форматирование строки будет выполняться только в том случае, если флаг IsloggingEnabled true.
Однако во втором вызове метода, который использует интерполированную строку, форматирование строки уже выполняется до того, как метод будет вызван, даже если IsloggingEnabled < /code> является false. Было бы неплохо, чтобы форматирование строки было выполнено условно и при этом выиграть от читаемости, возникающей из интерполированной строки. Код> Параметры метода log () , указывающий, что они представляют строку формата так, чтобы журнал вызовов ($ "hello {name}!") будет Скомпилировано в log ("Привет {0}!", имя) , который будет иметь желаемый эффект?

Подробнее здесь: https://stackoverflow.com/questions/794 ... ted-string
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»