0
在C#
中,使用泛型參數來修改泛型方法的行爲通常是不好的做法嗎?CLR泛型方法根據泛型參數的類型進行分支
在例如:
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");
}
}
的性能差異之外,這兩種方法將具有相同的效果。
我想知道的是,是否使用泛型參數來修改方法的行爲(做分支)是個好主意。這可以被認爲是一種副作用嗎?
_性能差異擱置 - 有哪些性能差異? – stuartd
假設你不能使用重載(爲什麼不?),它沒有任何內在的錯誤。 – Rob
您可以將該方法放在Square和Circle的基類上,因此只需使用常規繼承。否則,沒有太大的區別。 – Evk