なぜがループで型を取得するのかについて多くの質問 ( 1 2 3 ) がありますが、今回は違います。このコード スニペットを使用して をループすると、非ジェネリックのみを実装し、!varobjectforeachX509Certificate2CollectionvarX509Certificate2objectX509Certificate2CollectionIEnumerableIEnumerable<T>
X509Certificate2Collection collection = new X509Certificate2Collection();
foreach (var cert in collection)
{
Console.WriteLine(cert.Subject);
}
msdnの記事で継承階層を確認できますが、実装していないようですIEnumerable<X509Certificate2>。X509Certificate2コレクションで LINQ を使用すると、型を取得できません。
collection.Select(cert => cert.Subject); // Won't compile
では、コンパイラはどのようにして実際の型を認識しているのvarでしょうか?