根据现有的重载约束类型arg

时间:2011-04-02 17:37:28

标签: c# .net generics constraints overloading

假设Foo有2个重载:

void Foo(int[] array) { ... }
void Foo(int[,] array) { ... }

我编写了一个函数Bar,它调用了Foo,我希望Bar支持int []和int [,]参数,所以我有这个:

void Bar(int[] array)
{
    // do some work here, and finally call Foo:
    Foo(array);
}

void Bar(int[,] array)
{
    // do some work here, and finally call Foo:
    Foo(array);
}

我想通过制作一个通用的Bar方法来删除代码重复。伪代码:

void Bar<TArray>(TArray array)
    where TArray is_a_type_accepted_by Foo
{
    // do some work here, and finally call Foo:
    Foo(array);
}

这可能吗?

1 个答案:

答案 0 :(得分:2)

不,在C#中无法实现这样的约束。