gpt4 book ai didi

c# - 默认(T)与 Activator.CreateInstance(T)

转载 作者:可可西里 更新时间:2023-11-01 08:53:30 27 4
gpt4 key购买 nike

我想知道以下语句是否会为引用类型返回不同的结果,或者它们是否相同?

  1. default(T)
  2. Activator.CreateInstance(T)

如果它们是相同的,在这个例子中,如果目标是输出 T 的默认值,您是否总是使用 default(T)?:

if (typeof(T).IsValueType || typeof(T) == typeof(String))
{
return default(T);
}
else
{
return Activator.CreateInstance<T>();
}

Best way to test if a generic type is a string? (c#)

来了!

最佳答案

它们完全不同。

  1. default(T) , 当 T是引用类型,永远是null .
  2. Activator.CreateInstance<T>()将使用默认构造函数创建该类型的新实例(如果存在),否则抛出 MissingMethodException .

关于c# - 默认(T)与 Activator.CreateInstance(T),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7222767/

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