gpt4 book ai didi

c# - Activator.CreateInstance 和使用表达式之间有明显的区别吗?

转载 作者:行者123 更新时间:2023-11-30 19:57:47 24 4
gpt4 key购买 nike

使用这段代码:

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,这里的方法名称是什么?

最佳答案

如果您使用 Activator.CreateInstance,则不会进行静态检查。编译器无法检查是否存在带有两个 int 参数的公共(public)构造函数。

而且它可能更慢,因为它使用了反射。

关于c# - Activator.CreateInstance 和使用表达式之间有明显的区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28672328/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com