如何处理C#字符串插值中的空值?

Cal*_*lle 40 c# c#-6.0

在C#6.0中,添加了字符串插值.

string myString = $"Value is {someValue}";
Run Code Online (Sandbox Code Playgroud)

在上面的例子中如何处理空值?(如果someValue为null)

编辑: 只是为了澄清,我已经测试并且意识到它没有失败,问题被打开以确定是否有任何需要注意的情况,我必须在使用字符串插值之前检查空值.

juh*_*arr 22

这与string.Format("Value is {0}", someValue)检查null引用并用空字符串替换它的方法相同.但是,如果您实际传递null这样的话会引发异常string.Format("Value is {0}", null).但是,在这种情况下$"Value is {null}",null首先设置为参数,不会抛出.

  • 如果它看到你为`args`参数传递`null`(http://imgur.com/6tiMwOZ)本身而不是null元素,它会抛出 (3认同)
  • FWIW,`Console.WriteLine` [在此处结束](http://referencesource.microsoft.com/#mscorlib/system/string.cs,c07c3772222caaff),其中 null arg 包含在 `ParamsArray` 中,而直接调用 [在此处结束](http://referencesource.microsoft.com/#mscorlib/system/string.cs,691a34e179b91fdb,references),它在点击 `ParamsArray` 的不同构造函数之前进行空引用检查。 (2认同)

Son*_*nül 15

TryRoslyn开始,它被反编译为;

string arg = null;
string.Format("Value is {0}", arg);
Run Code Online (Sandbox Code Playgroud)

并且String.Format将使用空字符串null值.在格式方法简介部分;

如果参数的值为null,则格式项将替换为 String.Empty.

  • 这似乎已经改变了。现在反编译为: string str = null; 字符串文本=“值为”+str;空字符串仍替换为 String.Empty。 (2认同)