检查字符串对象数组是否为空值

时间:2016-02-25 10:21:59

标签: c# null-check

我认为这是一个相当基本的问题,但要么我的大脑还没有醒来,要么我只是厚厚的!

我有一个类,它具有下面定义的字符串集合的属性(名称被简化)

public class IdentifierCollection : BaseSubCollection, IIdentifierCollection
{
    public string Id1{ get; set; }
    public string Id2{ get; set; }
    public string Id3{ get; set; }
    // ...      
}

我想在保存之前检查是否有任何属性确实有值,所以我现在正在做这样的事情......

if (string.IsNullOrEmpty(primaryObj.Identifiers?.Id2) &&
    string.IsNullOrEmpty(primaryObj.Identifiers?.Id2) &&
    string.IsNullOrEmpty(primaryObj.Identifiers?.Id3) &&
    string.IsNullOrEmpty(primaryObj.Identifiers?.Id4) &&
    string.IsNullOrEmpty(primaryObj.Identifiers?.Id5) &&
    string.IsNullOrEmpty(primaryObj.Identifiers?.Id6) &&
    string.IsNullOrEmpty(primaryObj.Identifiers?.Id7) &&
    string.IsNullOrEmpty(primaryObj.Identifiers?.Id8))
{

}

只是输入这个感觉错了!!必须有更好的方法......

1 个答案:

答案 0 :(得分:1)

我认为这种财产检查没有任何问题。使用反射或实现一些接口只是为了能够遍历属性看起来对我来说太过分了。虽然我同意这么长的陈述看起来像有条件的检查一样尴尬。为了使代码更具可读性,我将此检查提取到一个单独的私有方法。

if (NoPropIsNullOrEmpty())
{
}

private bool NoPropIsNullOrEmpty()
{
    return !(string.IsNullOrEmpty(primaryObj.Identifiers?.Id2) ||
             string.IsNullOrEmpty(primaryObj.Identifiers?.Id2) ||
             string.IsNullOrEmpty(primaryObj.Identifiers?.Id3) ||
             string.IsNullOrEmpty(primaryObj.Identifiers?.Id4) ||
             string.IsNullOrEmpty(primaryObj.Identifiers?.Id5) ||
             string.IsNullOrEmpty(primaryObj.Identifiers?.Id6) ||
             string.IsNullOrEmpty(primaryObj.Identifiers?.Id7) ||
             string.IsNullOrEmpty(primaryObj.Identifiers?.Id8));
}