Action <T>或Action <in T>?

Sam*_*yan 10 .net c# generics delegates

我在MSDN上阅读有关Action Delegate的内容,以及语法下的内容

 public delegate void Action<in T>(T obj);
Run Code Online (Sandbox Code Playgroud)

比我查看c-sharpcorner.com并使用了这种语法

public delegate void Action<T>(T obj);   
Run Code Online (Sandbox Code Playgroud)

你可以看到inT之前没有.
哪种语法是正确的,这是什么in意思?
编辑:使用相同的语法Predicate.

谢谢.

Jon*_*eet 10

inout(通用的逆向和协方差)只在C#4中引入,代理和接口都针对.NET 4进行了修改 - 因此Action<T>.NET 3.5 Action<in T>在.NET 4中得到了改进.

您所指的文章是从2006年开始的,早在.NET 4发布之前.

如果您更改了正在显示的MSDN版本,您将看到更改 - 例如,.NET 3.5版本显示它没有in.


Mot*_*tti 9

in部分用于协方差和逆变,并在.NET 4.0中引入,您链接到的文章是在.NET 4.0发布之前于2006年发布的(显然它没有引用co [ntra]方差).