c#泛型类型的重载错误

前端之家收集整理的这篇文章主要介绍了c#泛型类型的重载错误前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想使用方法重载来根据不同的泛型类型获得不同的结果.这是行不通的.我的代码清楚地表明了
static class Helper
{

    public static bool Can(int i)
    {
        return true;
    }

    public static bool Can(Object o)
    {
        return false;
    }
}

class My<T>
{
    public static bool can = Helper.Can(default(T));
}

Console.WriteLine(Helper.Can(default(int)));//True,it is OK

Console.WriteLine(My<int>.can);//false?? why the overload doesn't work
Console.WriteLine(My<Object>.can);//false

为什么我的< int>调用Helper.Can(Object o)而不是Helper.Can(int i)?

解决方法

它不起作用.

重载在编译时完全解决;泛型类型参数在运行时解析.由于编译器不知道T是int,因此您的代码将始终调用Can(Object).

原文链接:https://www.f2er.com/csharp/91290.html

猜你在找的C#相关文章