简体   繁体   中英

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 );

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

They make possible to do like below example.

Reader<string,object> first = someString => return someObject;
Reader<object,string> second= someObject => return someString;
first=second;

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM