Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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 );
like image 212
JaeWoo So Avatar asked Oct 30 '22 03:10

JaeWoo So


1 Answers

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

like image 82
Kolichikov Avatar answered Nov 15 '22 05:11

Kolichikov