なぜがループで型を取得するのかについて多くの質問 ( 1 2 3 ) がありますが、今回は違います。このコード スニペットを使用して をループすると、非ジェネリックのみを実装し、!var
object
foreach
X509Certificate2Collection
var
X509Certificate2
object
X509Certificate2Collection
IEnumerable
IEnumerable<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
でしょうか?