c#如何用反射判断同一个类的两个实例的值是否完全一样

publicclassTempClass{inta;intb;stringc;stringd;boole;boolf;publicintA{set{a=value;}ge... public class TempClass
{
int a;
int b;
string c;
string d;
bool e;
bool f;

public int A
{
set { a = value; }
get { return a; }
}
public int B
{
set { b = value; }
get { return b; }
}
public string C
{
set { c = value; }
get { return c; }
}
public string D
{
set { d = value; }
get { return d; }
}
public bool E
{
set { e = value; }
get { return e; }
}
public bool F
{
set { f = value; }
get { return f; }
}
}
类很简单 现在我有TempClass的两个实例化TempA和TempB,我如何用反射的方法判断他们两个里面的属性的具体值都是一样的?
直接用Equals不行,因类是引用对象,两个的内存地址不一样,Equals当然返回FALSE了,但是用反射该怎么实现呢?我还真不知道,请高手指点。
展开
 我来答
旁笑槐NH
2009-09-10 · TA获得超过2545个赞
知道大有可为答主
回答量:2686
采纳率:0%
帮助的人:2894万
展开全部
你可以用this.getClass().getDeclaredFields()然后比较所有基本类型字段。不过最好的方法是重写TempClass的Equals
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kid83
2009-09-11 · TA获得超过2081个赞
知道大有可为答主
回答量:1818
采纳率:0%
帮助的人:1999万
展开全部
public static bool ObjectEquel(TempClass obj1, TempClass obj2)
{
Type type1 = obj1.GetType();
Type type2 = obj2.GetType();

System.Reflection.PropertyInfo[] properties1 = type1.GetProperties();
System.Reflection.PropertyInfo[] properties2 = type2.GetProperties();

bool IsMatch = true;
for (int i = 0; i < properties1.Length; i++)
{
string s = properties1[i].DeclaringType.Name;
if (properties1[i].GetValue(obj1, null).ToString() != properties2[i].GetValue(obj2, null).ToString())
{
IsMatch = false;
break;
}
}

return IsMatch;
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式