C#泛型创建实例

1 class Test where T : new()
2 {
3   public static T Instance()
4   {
5     return new T();
6   }
7 }

就上面这方法, 居然比new object慢了几十倍(在x86和x64上面表现不一), 我当时就惊呆了, 后来研究一番才发现, new T()被翻译成System.Activator.CreateInstance(), 真的是日了狗了.

把代码改成

1 public static Fun Instance = Expression.Lambda>(Expression.New(typeof(T))).Compile()

然后只比new object慢了四五倍…

你可能感兴趣的:(C#泛型创建实例)