对象null和空检查的最佳方法是什么?

urv*_*ish 0 c#

我在C#中有如下代码:

If  (this._university != Null and this._university.department !=null &&
     this._university.department.class !=null && 
     this._university.department.class.student != null && 
     this._university.department.class.student.name != null &&
     this._university.department.class.student.name.firstname != null &&
     this._university.department.class.student.name.firstname !=String.empty)

{
   // selecting first letter of Firstname
   var F_firstname = this._university.department.class.student.name.firstname[0].tostring();
}
Run Code Online (Sandbox Code Playgroud)

但是代码看起来非常糟糕,无法检查null对象.我们有更好的方法来检查对象的空值吗?

AAA*_*ddd 6

如果您使用的是后来的C#版本之一.使用Null条件运算符可能会更好看.然而,无论如何,这是一个不寻常的代码,可能指出需要重构一点.

var firstName = this._university?.department?.class?.student?.name?.firstname;
if(!string.IsNullOrEmpty(firstName))
{
   ...
}
Run Code Online (Sandbox Code Playgroud)


进一步阅读

空条件运算符

在执行成员访问(?.)或索引(?[])操作之前,测试左操作数的值为null; 如果左侧操作数计算为null,则返回null.

String.IsNullOrEmpty

指示指定的字符串是null还是空字符串.