2
我正在學習更多關於這個世界的知識。 而在我的測試中,我發現了這個奇怪:.net 3.5中的協變
[TestMethod]
public void VarianceTest()
{
List<string> listValues = new List<string>();
string[] arrayValues = listValues.ToArray();
var result = HelperCoVariant.GetTest<int>(listValues); // error to compile
var result2 = HelperCoVariant.GetTest<int>(arrayValues); // sucess
}
任何方法:
public static class HelperCoVariant
{
public static IEnumerable<T> GetTest<T>(this IEnumerable<object> t)
{
foreach (var item in t)
{
yield return (T)item;
}
}
}
我明白了。 .NET 4的作品完美,因爲
IEnumerable<out T>
但爲什麼。 NET 3.5,有這種行爲?
因爲C#3不支持泛型類型的協變或逆變... –