至少有一个类字段不为空

时间:2012-08-03 07:00:53

标签: c#

我上课了:

public class A
{
   public string field1 {get;set;}
   public string field2 {get;set;}
}

我想检查至少有一个属性是否为空。

怎么做? 谢谢。

3 个答案:

答案 0 :(得分:9)

反思可以帮到你:

A myInstance = new A();
Type myType = myInstance.GetType();
if (myType.GetProperties(BindingFlags.Public | BindingFlags.NonPublic | 
                            BindingFlags.Static | BindingFlags.Instance)
   .Any(property => propoerty.CanRead && property.GetValue(myInstance, null) != null)) 
{ /* something is not null in myInstance */}

你的班级有多少属性并不重要。

注意:正如评论所指出的那样,这不会检查非公共和仅设置属性会炸毁它。代码已经过调整。

答案 1 :(得分:1)

它可以是1行..像这样:

if (instanceOfA.field1 != null || instanceOfA.field2 != null)

..实际上,对于字符串,最好像这样测试:

if (string.IsNullOrEmpty(instanceOfA.field1) ||
    string.IsNullOrEmpty(instanceOfA.field2))

答案 2 :(得分:1)

if(obj.field1 != null || obj.field2 != null)