我有一个结构类型:
struct test1
{
public int a;
public int b;
public double c;
public string d;
}
以下行为我提供了“清除”结构对象,其中字段已使用其默认值进行初始化:
test1 tt = default(test1);
// tt.a will be equal 0
但是现在,我希望有机会为结构类型中的某些字段预定义默认值。例如,我希望字段 a 将 25 作为默认值。
是否可以强制默认运算符使用我预定义的默认值初始化我的结构?
答案 0 :(得分:1)
不,这是不可能的。
不同的类型已经有明确的默认值:
null
用于参考类型。我认为默认DateTime
只是对其内部字段的解释(从纪元起0 * 100纳秒)。
您无法覆盖或更改default
运算符的工作方式。
答案 1 :(得分:1)
您的字段将初始化为其类型的默认值,但您可以使用属性使其行为就像设置默认值一样。
在这个片段中,我们使用了一个可以为null的int但是暴露了一个int。如果支持字段的值为null,我们知道我们正在处理新的/默认实例,并且需要提供默认值。
struct test1
{
private int? a;
public int A
{
get { return a ?? 25; }
set { a = value; }
}
}