C#/.NET5插值字符串中带冒号语法的名称及用法咨询
语法官方名称
该语法是C#插值字符串内插表达式的格式字符串组件,是插值字符串专属的语法结构。
运行原理
冒号后的内容只有写在插值字符串的{}包裹的内插表达式尾部时才会被编译器识别,单独写currentDate:t不属于C#合法独立语法,因此直接赋值会报错。
运行时,{表达式:格式字符串}的逻辑等价于调用对应表达式的ToString(格式字符串)重载(如果指定了全局格式提供器则会作为第二个参数传入)。你示例中的{currentDate:d}和{currentDate:t},本质就是分别调用currentDate.ToString("d")和currentDate.ToString("t"),其中d是DateTime类型预定义的短日期格式说明符,t是短时间格式说明符,最终输出的就是对应格式化后的字符串结果。
适用范围
该语法不局限于DateTime类型,所有实现了IFormattable接口的类型都可以使用该写法:
- 数值类型(int、double、decimal等):可通过格式符实现货币格式化、小数位数固定、百分比显示等效果,示例:
var price = 199.9m; Console.WriteLine($"{price:C}"); // 输出对应区域的货币格式,例如 ¥199.90
- TimeSpan、Guid等系统内置类型:都有对应的预定义格式说明符可以直接调用
- 自定义类型:只要自己实现
IFormattable接口的ToString方法,自定义的格式规则也可以在插值字符串中通过该语法生效。
内容的提问来源于stack exchange,提问作者Monique Heinz
相关产品推荐
相关产品推荐

