对象属性空/空检查

时间:2019-10-05 01:37:02

标签: c# .net-core

我有以下对象,需要在做某些事情之前检查空/可空性。

对象:

ObjectA = new ObjectA
{
    ObjectB = new ObjectB
    {
        attribute1 = "64072292046",
        attribute2 = "",
        attribute3 = null
    }
} 

检查为空和为空的代码

方法I:

private bool checkDataExist(ObjectA myObject)
{
    return !myObject.ObjectB.attribute1.IsNullOrWhiteSpace() 
    || !myObject.ObjectB.attribute2.IsNullOrWhiteSpace() 
    || !myObject.ObjectB.attribute3.IsNullOrWhiteSpace();
}

方法II

private bool checkDataExist(ObjectA myObject)
{
    return (myObject.ObjectB.attribute1?? myObject.ObjectB.attribute2 ?? myObject.ObjectB.attribute3) != null;
}

从代码可读性的角度来看,这并不好。只是想知道是否有其他方法可以将其表示为更具可读性?

1 个答案:

答案 0 :(得分:3)

您可以将该逻辑封装到类本身中,并让它确定何时有效。

public class ObjectA
{
    public ObjectB ObjectB { get; set; }

    public bool IsValid()
    {
        if (ObjectB == null) return false;
        return ObjectB.IsValid();
    }
}

public class ObjectB
{
    public string Attribute1 { get; set; }
    public string Attribute2 { get; set; }
    public string Attribute3 { get; set; }

    public bool IsValid()
    {
        return !string.IsNullOrWhiteSpace(Attribute1) 
        || !string.IsNullOrWhiteSpace(Attribute2)
        || !string.IsNullOrWhiteSpace(Attribute3);
    }
}

然后您可以像这样使用它

var objA = new ObjectA
{
    ObjectB = new ObjectB
    {
         //init
    }
};

if(objA.IsValid())
    // do whatever