在c#中调用泛型方法时的速记
本文关键字:泛型方法 调用 | 更新日期: 2023-09-27 18:17:32
如果我有
方法void foo<T>(T bar){}
我可以成功地这样调用它:
string s = string.Empty;
foo(s);
我想编译器/运行时可以推断类型,
然而,如果我将方法更改为:
T foo<T,T2>(T2 bar){...}
然后我必须在'full'中调用它,同时指定输入参数类型和返回类型:
string s = string.Empty;
foo<int,string>(s);
是否有一种方法可以简化这个,所以我不需要指定输入参数的类型?即
foo<int>(s);
谢谢
您可以将您的方法重写为:
void foo<T, U>(U bar, out T baz)
{
baz = default(T);
}
如果你真的想要类型推断…现在:
string s = string.Empty;
int i;
foo(s, out i);
就可以了。
另外,请参阅Eric Lippert关于为什么你不能得到你想要的东西的精彩答案。
编辑:我意识到我实际上没有回答你的问题…是否有一种方法可以简化它,这样我就不需要指定输入参数类型?
简单地说……没有。
不幸的是,编译器无法从用法中推断出示例中的T
。如果不能自动完成,则需要提供它。
c#中没有"可选"类型参数,也没有简写。