max*_*axp 5 c# generics type-inference
如果我有这个方法
void foo<T>(T bar){}
Run Code Online (Sandbox Code Playgroud)
我可以这样成功地调用它:
string s = string.Empty;
foo(s);
Run Code Online (Sandbox Code Playgroud)
我想象编译器/运行时可以推断出类型,
但是,如果我将方法更改为:
T foo<T,T2>(T2 bar){...}
Run Code Online (Sandbox Code Playgroud)
然后我必须在'full'中调用它,同时指定输入参数类型和返回类型:
string s = string.Empty;
foo<int,string>(s);
Run Code Online (Sandbox Code Playgroud)
有没有办法我可以简写这个,所以我不需要指定输入参数类型?IE
foo<int>(s);
Run Code Online (Sandbox Code Playgroud)
谢谢
你总是可以将你的方法重写为:
void foo<T, U>(U bar, out T baz)
{
baz = default(T);
}
Run Code Online (Sandbox Code Playgroud)
如果你真的想要类型推断......现在:
string s = string.Empty;
int i;
foo(s, out i);
Run Code Online (Sandbox Code Playgroud)
会工作得很好。
另外,请参阅:这个问题,埃里克·利珀特(Eric Lippert)对为什么你不能拥有你想要的东西做出了很好的回答!
编辑:我意识到我实际上没有回答你的问题......
有没有办法可以简写它,这样我就不需要指定输入参数类型?
简单地说...不。
| 归档时间: |
|
| 查看次数: |
235 次 |
| 最近记录: |