mpe*_*pen 16 c# generics anonymous-function
具体来说,我想写这个:
public Func<IList<T>, T> SelectElement = list => list.First();
Run Code Online (Sandbox Code Playgroud)
但我得到一个语法错误T.我不能拥有通用的匿名方法吗?
Eri*_*ert 15
不,谢谢.这将需要通用字段或通用属性,这些属性不是C#支持的功能.你能做的最好的事情就是制作一个引入T的通用方法:
public Func<IList<T>, T> SelectionMethod<T>() { return list => list.First(); }
Run Code Online (Sandbox Code Playgroud)
现在你可以说:
Func<IList<int>, int> selectInts = SelectionMethod<int>();
Run Code Online (Sandbox Code Playgroud)
当然可以,但T必须知道:
class Foo<T>
{
public Func<IList<T>, T> SelectionMethod = list => list.First();
}
Run Code Online (Sandbox Code Playgroud)
作为替代方法,如果您不想使包含类具有通用性,则可以使用泛型方法:
public Func<IList<T>, T> SelectionMethod<T>()
{
return list => list.First();
}
Run Code Online (Sandbox Code Playgroud)
但是仍然有人在编译时需要知道这一点T.
| 归档时间: |
|
| 查看次数: |
7094 次 |
| 最近记录: |