C# 是否可以强制运算符**默认值(MyStructType)**使用预定义值初始化结构

C# 是否可以强制运算符**默认值(MyStructType)**使用预定义值初始化结构,c#,default,default-value,C#,Default,Default Value,我有一个结构类型: 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 但是现在,我想让opportunity为struct类型中的某些字段预定义默认值。例如,我希望字段a具有25作

我有一个结构类型:

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
但是现在,我想让opportunity为struct类型中的某些字段预定义默认值。例如,我希望字段a具有25作为默认值

是否可以强制默认值运算符使用预定义的默认值初始化我的结构?

不,这是不可能的

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

  • 引用类型的
    null
  • 0或0.0表示整数和浮点类型
我相信默认的
DateTime
只是对其内部字段(从epoch开始0*100纳秒)的上述解释


您不能覆盖或更改默认运算符的工作方式。

您的字段将被初始化为其类型的默认值,但您可以使用属性使其行为与设置默认值一样

    struct test1
    {
        private int? a;

        public int A
        {
            get { return a ?? 25; }
            set { a = value; }
        }
    }
在这个代码段中,我们使用了一个可为null的int,但公开了一个int。如果backing字段的值为null,我们知道我们正在处理一个新的/默认的实例,需要提供默认值

    struct test1
    {
        private int? a;

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