我是C#的初学者,只是有关Func委托的一个问题:
public delegate TResult Func<in T,out TResult>(T arg);
Run Code Online (Sandbox Code Playgroud)
我可以理解需要in在T之前放置关键字,因为我们不想修改源输入,但是out在TResult之前呢?那不是意味着我们需要修改输出,但是为什么呢?有时候我们不是即时生成返回对象,而是说我们有一个委托:
Func<string, bool> nameFilter = str => str[0] == 'S';
Run Code Online (Sandbox Code Playgroud)
因此它检查字符串以查看其第一个字符是否为'S',然后返回true或false,因此我们动态返回此布尔值,out关键字在这里做什么?有什么需要改变的吗?