覆盖结构中的默认值(c#)

17 c# struct defaults

是否可以设置或覆盖结构的默认状态?

作为一个例子,我有一个

enum something{a,b,c,d,e};
Run Code Online (Sandbox Code Playgroud)

以及为该枚举链接2个值的结构

struct SomethingData
{
    something type;
    int Value;
    double Multipler;

    SomethingData(something enumVal, int intVal, double DblVal) {...}
}
Run Code Online (Sandbox Code Playgroud)

但是我可以指定默认状态

SomethingData(something.c,0,1);
Run Code Online (Sandbox Code Playgroud)

Jor*_*oba 13

结构构造函数类似于类构造函数,但以下差异除外:

结构不能包含显式无参数构造函数.Struct成员会自动初始化为其默认值.结构不能具有以下形式的初始化程序:base(argument-list).

http://msdn.microsoft.com/en-us/library/aa288208(v=vs.71).aspx

所以,简短的回答,不,你不能覆盖默认的构造函数(每个结构都有一个无参数的构造函数,你不能隐藏它或覆盖它)...


cdh*_*wie 8

你不能.结构总是有一个默认构造函数,它将每个成员设置为其默认值(null对于引用类型,0对于数字类型,false对于bool等).此行为无法更改.