不时地,我会尝试挑战C#编译器。今天我想到了这个:
static void CallFirst<T>(T a) where T : IEnumerable<T>
{
a.First().ToString();
}
这只是个简单的错误,因为我想创建一个以集合为参数的通用方法,它应该像这样:
static void CallFirst2<T>(IEnumerable<T> a)
{
a.First().ToString();
}
无论如何,调用
CallFirst()
方法是否可能呢?每次传递集合时,都会期望一个集合的集合。如果不可能,难道不应该在编译时报错吗?
T: IEnumerable<T>
可能没有意义,但T : IComparable<T>
却非常有意义,并且实际可用。 - SWeko