Search code examples
c#methodsdelegatesmethod-signature

What is in and out on delegate in c#?


In c# code, i found this implement.

I tried to find out what this in and out meaning, but only explanation of out keyword in there.

So what these in and out keyword do?

public delegate Tb Reader<in Ta, out Tb>( Ta a );

Solution

  • The in parameter specifies that the type parameter is contravariant -you can pass in a class that Ta inherits from.

    The out parameter specifies that the parameter is covariant -> you can use more derived types.

    See here for the in modifer, and here for the out modifier