如何允许方法接受字符串或int?

use*_*480 3 .net c# methods c#-4.0

使用C#4.0,是否有办法允许方法(不创建重载)接受字符串或int,然后允许我检测传入的类型?

Cod*_*ray 19

由于您使用的是C#4.0,因此可以编写通用方法.例如:

void MyMethod<T>(T param)
{
    if (typeof(T) == typeof(int))
    {
        // the object is an int
    }
    else if (typeof(T) == typeof(string))
    {
        // the object is a string
    }
}
Run Code Online (Sandbox Code Playgroud)

但是你应该认真考虑这是不是一个好主意.上面的例子有点代码味道.事实上,泛型的全部意义是通用的.如果你必须根据传入的对象的类型对你的代码进行特殊处理,那么这就是你应该使用重载的标志.这样,每个方法重载处理其独特的情况.我无法想象这样做有什么不利之处.

  • 同意示例周围的气味; 两个重载在这里更好. (3认同)