在 C# 中,使用字符串插值格式化日志消息既简洁又直观。你只需在字符串前加上
$符号,然后在大括号
{} 中放入变量或表达式即可。
基本插值用法
直接将变量嵌入字符串中,编译器会自动处理转换。
string user = "Alice";
DateTime loginTime = DateTime.Now;
Console.WriteLine($"User {user} logged in at {loginTime}");
这比传统的
String.Format("User {0} logged in at {1}", user, loginTime) 更易读,尤其当变量较多时不容易出错。
控制日期和数字格式
在大括号内使用冒号
:可以指定格式化规则,让日志输出更规范。 格式化时间为“年-月-日 时:分”:
{loginTime:yyyy-MM-dd HH:mm}
显示两位小数的浮点数:double price = 19.5;→
{price:F2}
整数补零至6位:int id = 123;→
{id:D6}
例如:
Console.WriteLine($"ID:{id:D6} - User {user} paid ${price:F2} on {loginTime:yyyy-MM-dd}") 输出为 ID:000123 - User Alice paid $19.50 on 2025-09-25。
处理复杂表达式与转义
插值支持直接调用方法或执行简单逻辑,适合动态日志内容。
调用方法:Console.WriteLine($"File size: {GetFileSize():N0} bytes")
条件判断:Console.WriteLine($"{name} is {(age >= 18 ? "an adult" : "a minor")}")
转义大括号:要输出字面的 { 或 },使用双括号
{{ 和 }}
比如记录错误时:
Log($"Error occurred: {{ Code: {errorCode}, Message: \"{errorMessage}\" }}"),可避免 JSON 或结构化文本的格式问题。
基本上就这些,字符串插值让日志代码更清晰,也减少了参数顺序错乱的风险。
