基于现有重载约束类型 arg
假设 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);
}
这可能吗?
Let's say Foo has 2 overloads:
void Foo(int[] array) { ... }
void Foo(int[,] array) { ... }
I've written a function a function Bar, which calls Foo, and I want Bar to support both int[] and int[,] arguments, so I have this:
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);
}
I want to remove the code duplication by making just one, generic Bar method. Pseudocode:
void Bar<TArray>(TArray array)
where TArray is_a_type_accepted_by Foo
{
// do some work here, and finally call Foo:
Foo(array);
}
Is this possible?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
不,这样的约束在 C# 中是不可能的。
No, such a constraint is not possible in C#.