否定null-coalescing运算符

jhu*_*ter 14 c# null-coalescing-operator

我有一堆字符串我需要使用.Trim(),但它们可以为null.如果我可以做的事情会更简洁:

string endString = startString !?? startString.Trim();
Run Code Online (Sandbox Code Playgroud)

如果左侧的部分为非null,则基本上返回右侧的部分,否则只返回空值.我最后使用了三元运算符,但是为了这个目的,无论如何都要使用null-coalescing运算符?

use*_*116 12

不是规格:不是我喜欢它,但你可以使用:

string endString = (startString ?? String.Empty).Trim();
Run Code Online (Sandbox Code Playgroud)

对于规范,更好的扩展方法,如@ Kevin's:

string endString = (startString == null ? null : startString.Trim());
Run Code Online (Sandbox Code Playgroud)

  • 不要像他要求的那样传播null (5认同)
  • 如果startString为null,则不返回null. (3认同)
  • 天才.谢谢! (2认同)

kem*_*002 12

您可以创建一个扩展方法,该方法null在尝试修剪该值时返回.

public String TrimIfNotNull(this string item)
{
   if(String.IsNullOrEmpty(item))
     return item;
   else
    return item.Trim();
}
Run Code Online (Sandbox Code Playgroud)

请注意,您无法将其命名为Trim,因为扩展方法无法覆盖实例方法.