我有以下对象,需要在做某些事情之前检查空/可空性。
对象:
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;
}
从代码可读性的角度来看,这并不好。只是想知道是否有其他方法可以将其表示为更具可读性?
答案 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