如何让字符串插值运算符 $ 为空参数打印“null”?

Mr.*_*Boy 2 c# null conditional-operator null-coalescing-operator string-interpolation

string o=null;
Console.WriteLine($"Hello World '{o}'");
Run Code Online (Sandbox Code Playgroud)

这输出:

你好世界 ''

我想明确地为空值写“null”。

string o=null;
Console.WriteLine($"Hello World '{o??"null"}'");
Run Code Online (Sandbox Code Playgroud)

这就是这样做的:

你好世界“空”

但如果o不是类型string(或Object),则会生成编译错误。例如:

Array o=null;
Console.WriteLine($"Hello World '{o??"null"}'");
Run Code Online (Sandbox Code Playgroud)

编译错误运算符'??' 不能应用于“Array”和“string”类型的操作数

达到预期结果的最佳方法是什么?遗憾的是您无法修改$句柄的方式null,因为它似乎是硬编码的使用方式String.EmptyString

Biz*_*han 6

您可以进行强制转换"null"object以便??可以应用于所有类型的操作数。

$"Hello World '{o ?? (object)"null"}'"
Run Code Online (Sandbox Code Playgroud)