应使用default(T)或..将泛型类中的字段初始化为其默认值.

本文关键字:字段 初始化 默认值 泛型类 default | 更新日期: 2023-09-27 17:55:04

使用泛型Default可以用于将类型参数设置为默认值价值考虑到泛型类型不知道前面的实际占位符因此不能安全地假设默认值为

在泛型类字段中,什么时候应该通过default(T)初始化,什么时候我们应该让编译器将字段设置为其默认值,或者这只是一个偏好问题:

public class myType<T>
{
    public T _unkonwType1 =  default(T);
    public T _unknownType2;
}

乙醇

应使用default(T)或..将泛型类中的字段初始化为其默认值.

否,字段never需要初始化为默认值。(不管类何时实例化,它们都会被初始化。(

问题中的两个陈述完全相同。在第二个语句中,= default(T)基本上是隐含的,并且是由编译器在后台完成的。

但是,如果显式调用default(T),它仍然会运行,即使它是多余的。

我怎么知道呢?看看为这两个类生成的IL(即使是在Release构建中(:

public class MyClass1<T>
{
  public T Field;           
}
public class MyClass2<T>
{
  public T Field = default(T);
}

您会看到编译器确实像我们要求的那样插入了对default(T)的调用,但当然,该调用只会返回字段的初始值,因此不需要它。

因此,为了回答您的问题:显式调用default(T)会对性能造成(非常轻微的(影响,但我认为从长远来看,这不会对性能产生太大影响。