是否可以强制operator **default(MyStructType)**用预定义的值初始化struct ?

本文关键字:预定义 struct 初始化 operator 是否 default MyStructType | 更新日期: 2023-09-27 18:15:14

我有一个结构类型:

struct test1
{            
  public int a;
  public int b;
  public double c;
  public string d;
}

下面的行给了我一个"clear"结构对象,它的字段被初始化为默认值:

test1 tt = default(test1);
// tt.a will be equal 0

但是现在,我希望有机会为结构类型中的一些字段预定义默认值。例如,我希望字段a具有25作为默认值。

是否可以强制默认操作符初始化我的结构与我预定义的默认值?

是否可以强制operator **default(MyStructType)**用预定义的值初始化struct ?

不可能。

不同的类型已经有明确的默认值:

  • null为参考类型。
  • 0或0.0对于整数和浮点类型。

我认为默认的DateTime只是对其内部字段(0 * 100纳秒from epoch)的上述解释。

您不能重写或更改default操作符的工作方式

您的字段将被初始化为其类型的默认值,但您可以使用一个属性使其表现得好像它正在设置默认值。

在这段代码中,我们使用了一个可空的整型,但暴露了一个整型。如果后备字段的值为null,我们知道我们正在处理一个新的/default实例,需要提供默认值。

    struct test1
    {
        private int? a;
        public int A
        {
            get { return a ?? 25; }
            set { a = value; }
        }
    }