相关疑难解决方法(0)

两个相同的.NET对象并不是说它们

我有以下代码:

object val1 = 1;
object val2 = 1;

bool result1 = (val1 == val2);//Equals false
bool result2 = val1.Equals(val2); //Equals true
Run Code Online (Sandbox Code Playgroud)

那是怎么回事?修复此问题的唯一方法是使用.Equals()方法吗?

c# equality equals

14
推荐指数
2
解决办法
8312
查看次数

通用重载决议

我有以下场景:

class Foo { }

class Foo<T> : Foo { }
Run Code Online (Sandbox Code Playgroud)

然后是两种方法

void DoStuff(Foo foo) 
{
     DoStuffImpl(foo);
}

void DoStuffImpl(Foo foo) 
{ 
     Console.WriteLine("A");
}    
void DoStuffImpl<T>(Foo<T> foo) 
{ 
     Console.WriteLine("B");
} 

void Main() 
{
     DoStuff(new Foo<int>()); // prints A
}
Run Code Online (Sandbox Code Playgroud)

(注意,代码是在浏览器中编写的,但描述了我面临的情况)

如何让它调用泛型方法,然后打印B?

这可以在没有反思的情况下完成吗?关于如何用反射完成,我有一些想法,但我正在寻找一个更清洁的解决方案,如果存在的话.

注意:我不能创建DoStuff泛型,因为这将与WCF一起使用,并且不允许打开泛型类型.

c# generics overloading

7
推荐指数
2
解决办法
2279
查看次数

标签 统计

c# ×2

equality ×1

equals ×1

generics ×1

overloading ×1