是否可以强制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作为默认值。
是否可以强制默认操作符初始化我的结构与我预定义的默认值?
不可能。
不同的类型已经有明确的默认值:
-
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; }
}
}