C#字符串插值。十进制时使用字符串?是空的
我有以下C$字符串插值:C#字符串插值。十进制时使用字符串?是空的,c#,c#-7.0,C#,C# 7.0,我有以下C$字符串插值: decimal? approved = null; var text = $"new {{ Approved = { approved ?? ""null"" } }}" 在这种情况下,由于approved为null,文本值应为: new { Approved = null } 但我得到一个编译错误: Operator '??" cannot be applied to operands of type 'decimal?' and 'string' 如果我使用
decimal? approved = null;
var text = $"new {{ Approved = { approved ?? ""null"" } }}"
在这种情况下,由于approved为null,文本值应为:
new { Approved = null }
但我得到一个编译错误:
Operator '??" cannot be applied to operands of type 'decimal?' and 'string'
如果我使用以下选项:
var text = "new {{ Approved = { approved } }}"
文本值将变为我不想要的以下值:
new { Approved = }
您发布的代码无法编译。您不能这样做:var approved=null。要获得您想要的,您需要执行以下操作:
decimal? approved = null;
var text = new { Approved = approved == null ? "null" : approved.ToString() }
空合并运算符
?
的两侧需要具有相同的类型,因此调用ToString
并添加空条件运算符?
,以确保不会抛出NRE。您正在尝试将字符串值设置为十进制或字符串。这就是为什么会出现错误。approved?.ToString()应该可以解决这个问题…var text=$“new{{approved={(approved?.ToString()??“null”)}”代码>
decimal? approved = null;
var text = $"new {{ Approved = { (approved?.ToString() ?? "null") } }}";