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。我正在按预期评分。不太确定如何使用扩展方法,但我现在将对此进行研究。