C# 我是否可以修改我的数据模型类,以便在没有该类的实例时,对属性的查询不会导致异常?

C# 我是否可以修改我的数据模型类,以便在没有该类的实例时,对属性的查询不会导致异常?,c#,C#,我有以下课程: public class DataSource { [DisplayName("Value")] public string Value { get; set; } [DisplayName("Title")] public string Title { get; set; } } 要检索的以下代码: public DataSource Get(string ds) { if (ds != null &&a

我有以下课程:

public class DataSource
{
    [DisplayName("Value")]
    public string Value { get; set; }
    [DisplayName("Title")]
    public string Title { get; set; }
}
要检索的以下代码:

    public DataSource Get(string ds)
    {
        if (ds != null && ds == "0000")
            return GetDataSources().Single(s => s.Value == ds);
        return null;
    }
如果ds的值为null或“0000”,则需要执行以下操作 返回null,但它给出了一个异常:

var dsa = _dataSource.GetTitle(ds).Title;

如果ds为null或“0000”,是否可以使“.Title”返回null而不是异常?

简单的回答是“否”。您要查找的是“空安全解引用运算符”,它在C#中不存在

您可以做很多事情,但老实说,我认为最好的选择就是:在成员访问之前检查值

其他选择:

  • 编写一个扩展方法(
    GetTitle(此数据源){…}
    ),适当地检查
    ;扩展方法可以在
    null
    实例上调用,因此即使返回
    null
    GetTitle(ds).GetTitle()
    也可以工作
  • 使用

    • 是不是
      ds
      就是
      null
      ?或者当ds的值为空时,它是数据源。如果发生这种情况,则检索到的数据源的值为null,然后当“.Title”运行时,它会给出一个异常。如果我尝试在没有.Title扩展名的情况下设置dsa代码,那么它只会将dsa设置为null,一切正常。谢谢Marc。我正在按预期评分。不太确定如何使用扩展方法,但我现在将对此进行研究。