Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#字符串插值。十进制时使用字符串?是空的_C#_C# 7.0 - Fatal编程技术网

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' 如果我使用

我有以下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'
如果我使用以下选项:

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