C#struct部分初始化

时间:2011-04-04 08:15:02

标签: c# struct initialization default-value

我有一个参数struct:

public struct MyParams
{
   public int    Param1;
   public int    Param2;
   public string Param3;
   public string Param4;
}

这是跨应用程序使用的常见结构。还有一些情况我需要初始化只有一个成员,所有其他成员都没有使用。我可以这样初始化struct:

MyParams testParams = default(MyParams);
testParams.Param2 = 3;
FunctionX(testParams);

此外,我可以在函数调用中初始化struct direct,但在这种情况下,我必须为所有成员指定值:

FunctionX(new MyParams{Param1=0,Param2=3,Param3=string.Empty,Param4=string.Empty});

我的问题是我可以在函数调用行中初始化结构,只指定一个对我来说足够的成员而另一个成员将采用默认值

提前致谢!

2 个答案:

答案 0 :(得分:3)

来自11.3.4 Default values

我引用:

  

但是,因为结构是值类型   不能为null,默认值   结构是由...产生的值   将所有值类型字段设置为它们   默认值和所有引用类型   字段为null。

答案 1 :(得分:2)

初始化struct时,所有成员都将初始化为默认值:

MyParams p = new MyParams() { Param3 = "Test" };

这将离开你:

Param1 == 0;
Param2 == 0;
Param3 ==“测试”;
Param4 == null;