【问题标题】:Can anyone understand/explain this String Extension?谁能理解/解释这个字符串扩展?
【发布时间】:2018-08-28 14:46:04
【问题描述】:

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

谁能帮助理解ToSafeString 对字符串的作用?

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

【问题讨论】:

  • 如果你写像object test = null;Console.WriteLine(test.ToSafeString());这样的代码,它可以防止NullReferenceException

标签: c# string


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    首先来源?检查传入的对象是否为 null,如果是,则整个部分 (source?.ToString()) 将返回 null 并且由于 ?. 运算符,.ToString() 不会被评估。这个操作符是简写的,相当于写:

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

    接下来,null 合并运算符 (??) 启动,如果源或来自 .ToString() 的返回为 null,它将返回 string.Empty 而不仅仅是 null。

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

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

    如果使用具有要从 .ToString() 返回的值的对象调用,它将返回该值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-01-08
      • 2012-02-12
      • 1970-01-01
      • 2016-04-10
      • 2010-10-19
      • 2013-04-24
      • 1970-01-01
      相关资源
      最近更新 更多