0

C#中,使用泛型参数来修改泛型方法的行为通常是一种不好的做法吗?

例如:

class Foo { }
class Bar { }

void GenericMethod<T>()
{
    if (typeof(T) == typeof(Foo))
    {
        Console.WriteLine("execute action for Foo");
    }

    if (typeof(T) == typeof(Bar))
    {
        Console.WriteLine("execute action for Bar");
    }
}

void NonGenericMethod(Type type)
{
    if (type == typeof(Foo))
    {
        Console.WriteLine("execute action for Foo");
    }

    if (type == typeof(Bar))
    {
        Console.WriteLine("execute action for Bar");
    }
}

抛开性能差异不谈,这两种方法的效果是一样的。

我想知道的是,使用泛型参数来修改方法的行为(进行分支)是否是一个好主意。这可以被认为是副作用吗?

4

1 回答 1

0

使用泛型方法的好处是您可以在不使用反射的情况下进一步调用其他泛型方法:

void GenericMethod<T>()
{
     AnotherGenericMethod<T>();
}

非泛型方法需要反射才能进行相同的调用。

于 2016-11-12T06:45:36.973 回答