使用此代码:
public static class ChocolateFactory<T>
{
private static Func<int, int, T> Func { get; set; }
static ChocolateFactory()
{
ChocolateFactory<EmergencyChocolate>.Func = (a, b) => new EmergencyChocolate(a, b);
}
public static T CreateChocolate(int a, int b)
{
return (T)Activator.CreateInstance(typeof(T), a, b);
//return ChocolateFactory<T>.Func(a, b);
}
}
如果我运行:
var myChocolate = ChocolateFactory<EmergencyChocolate>.CreateChocolate(1, 2);
两种创建方法之间有显着差异(一种被注释掉了)吗?Activator在代码方面更为简洁,但我知道它可能会更慢,但是我想知道是否在忽略其他任何内容。我也想知道这里是否有任何预编译的东西。
另外,如果不使用激活器,该方法的名称是什么?
如果使用,则不会进行静态检查Activator.CreateInstance
。编译器无法检查是否存在带有两个int
参数的公共构造函数。
而且它可能更慢,因为它使用反射。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句