检查字符串对象数组中的空值
checking an array of string objects for null values
我认为这是一个相当基本的问题,但要么是我的大脑还没有醒来,要么就是我太笨了!
我有一个 class,它有一个 属性 下面定义的字符串集合(名称已简化)
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))
{
}
只是输入这个感觉不对!!一定有更好的方法...
我不认为这种属性检查有什么问题。使用反射或实现一些接口只是为了能够遍历属性,这对我来说似乎有点矫枉过正。虽然我同意这么长的声明作为条件检查看起来很尴尬。为了使代码更具可读性,我将此检查提取到一个单独的私有方法中。
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));
}
我认为这是一个相当基本的问题,但要么是我的大脑还没有醒来,要么就是我太笨了!
我有一个 class,它有一个 属性 下面定义的字符串集合(名称已简化)
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))
{
}
只是输入这个感觉不对!!一定有更好的方法...
我不认为这种属性检查有什么问题。使用反射或实现一些接口只是为了能够遍历属性,这对我来说似乎有点矫枉过正。虽然我同意这么长的声明作为条件检查看起来很尴尬。为了使代码更具可读性,我将此检查提取到一个单独的私有方法中。
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));
}