私はこの世界についてもっと学んでいます。そして、私のテストでは、これが奇妙であることがわかりました:
[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 では、この動作はありますか?