最も簡単な方法として、ソース コードを見てみましょう。
このように実装されているActivator.CreateInstance(type)
呼び出し(短縮版):Activator.CreateInstance(type, false);
RuntimeType rt = type.UnderlyingSystemType as RuntimeType;
StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller;
return rt.CreateInstanceDefaultCtor(!nonPublic, false, true, ref stackMark);
汎用バージョンは次のように実装されています (これも短縮されています)。
RuntimeType rt = typeof(T) as RuntimeType;
StackCrawlMark stackMark = StackCrawlMark.LookForMyCaller;
return (T)rt.CreateInstanceDefaultCtor(true, true, true, ref stackMark);
したがって、唯一の違いは、引数 name を持つ 2 番目のブール値パラメーターであり、skipCheckThis
いくつかのマイナーな内部テストを実行するかどうかです。このため、一般的なバージョンはこれらのテストをスキップするだけでわずかに高速ですが、これらの違いを実際に測定することはできません.