我上课了:
public class A
{
public string field1 {get;set;}
public string field2 {get;set;}
}
我想检查至少有一个属性是否为空。
怎么做? 谢谢。
答案 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)