谁能理解/解释这个字符串扩展?

时间:2018-08-28 14:46:05

标签: c# string

我们有一个名为“ StringExtensions”的文件,它作为“类”,可用于我假设的多个数据集/模型。

有人可以帮助您了解此ToSafeString对字符串的作用吗?

public static string ToSafeString(this object source)
{
    return source?.ToString() ?? string.Empty;
}

2 个答案:

答案 0 :(得分:9)

它使用source?检查对象是否不为null。如果不是null,则调用ToString()并返回结果。如果是null,则返回string.Empty

它使用(.?) null conditional(??) null-coalescing运算符。

答案 1 :(得分:3)

首先来源?。检查传入的对象是否为null,是否整个部分(source?.ToString())将返回null,并且由于?.运算符而导致.ToString()未被求值。此运算符是简写形式,等效于编写:

if(source != null) {
  return source.ToString();
} else {
 return null;
}

接下来,空合并运算符(??)插入,它将返回string。如果源或.ToString()的返回为空,则空而不是空。

如果用null调用,它将返回string.Empty

如果在具有返回.ToString()的{​​{1}}方法的对象上调用,它也会返回null

如果使用具有要从string.Empty返回的值的对象进行调用,它将返回该值。