使用泛型默认可以用来 将类型参数设置为其默认值 值。这显然是有帮助的 通用类型不知道 实际的占位符在前面和 因此不能安全地承担什么 默认值为
通用类字段中的什么时候应该通过default(T)
初始化,什么时候我们应该让编译器将字段设置为默认值,或者只是偏好:
public class myType<T>
{
public T _unkonwType1 = default(T);
public T _unknownType2;
}
感谢名单
答案 0 :(得分:4)
不,字段从不需要初始化为默认值。 (无论何时实例化类,它们都将被初始化。)
答案 1 :(得分:3)
您问题中的两个陈述是相同的。在第二个语句中,= default(T)
基本上是隐含的,并且由编译器在引擎盖下完成。
但是,如果您明确调用default(T)
,即使它是多余的,它仍然可以运行。
我如何知道,看看为这两个类生成的IL(即使在发布版本中):
public class MyClass1<T>
{
public T Field;
}
public class MyClass2<T>
{
public T Field = default(T);
}
你会看到编译器确实像我们要求的那样插入对default(T)
的调用,但当然这个调用只会返回字段的初始值,所以不需要它。
所以,回答你的问题:你会通过明确地调用default(T)
来获得(非常轻微的)性能,但我认为从长远来看它不会对它产生太大的影响。