积极答复者
怎样比较两个T类型对象的地址?

问题
答案
-
你的问题描述不够详细。
如果是值类型,那obj1和obj2就是原来参数的副本,只是2个形参,那地址定然不同的,你可以反编译看看生成的IL是有分配和复制的。
如果是引用类型,直接用==就可以了。我猜测你的意思这样,如果是引用类型,对比引用指向的对象,如果值类型,则进行值类型比较,我的测试如下,你看是否满足你的要求。public void Test() { int a, b; a = 6; b = 6; Console.WriteLine(IsTheSameObj<int>(a, a)); } bool IsTheSameObj<T>(T obj1, T obj2) { return typeof(T).IsClass ? object.ReferenceEquals(obj1, obj2) : obj1.Equals(obj2); }
2011 c# mvp China- 已建议为答案 Neddy Ren 2011年2月17日 6:09
- 已标记为答案 Charles Shao 2011年2月17日 6:57
全部回复
-
你的问题描述不够详细。
如果是值类型,那obj1和obj2就是原来参数的副本,只是2个形参,那地址定然不同的,你可以反编译看看生成的IL是有分配和复制的。
如果是引用类型,直接用==就可以了。我猜测你的意思这样,如果是引用类型,对比引用指向的对象,如果值类型,则进行值类型比较,我的测试如下,你看是否满足你的要求。public void Test() { int a, b; a = 6; b = 6; Console.WriteLine(IsTheSameObj<int>(a, a)); } bool IsTheSameObj<T>(T obj1, T obj2) { return typeof(T).IsClass ? object.ReferenceEquals(obj1, obj2) : obj1.Equals(obj2); }
2011 c# mvp China- 已建议为答案 Neddy Ren 2011年2月17日 6:09
- 已标记为答案 Charles Shao 2011年2月17日 6:57