I\'ve just saw an unfamiliar syntax while looking for GroupBy
return type:
public interface IGrouping : IEnumerable<
out just means that the type is only used for output e.g.
public interface Foo
{
T Bar()
}
There also is a modifier in that means that the type is only used for input e.g.
public interface Foo
{
int Bar(T x)
}
These are used because Interfaces with in are covariant in T and Interfaces with out are contravariant in T.