2011-04-04 71 views
0

我有一個參數的結構:C#結構部分初始化

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

這是在應用程序使用共同的結構。還有一些情況是我只需要初始化一個成員,另一個不用。我可以初始化結構是這樣的:

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

而且我可以初始化結構中的函數調用直接的,但在這種情況下,我必須爲所有的成員指定的值:

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

我的問題是我可以初始化在函數調用行中的結構,並指定只有一個足夠我的成員和另一個成員將採取默認值

在此先感謝!

回答

3

11.3.4 Default values

我引述:

然而,由於結構是值類型 不能爲空,一個結構的默認值 是設置所有值類型字段由 產生的值將它們的默認值 和所有引用類型 字段設置爲空。

+0

哇。看來,我一直與結構初始化臨時混淆。它真的有可能調用FunctionX(new MyParams {Param2 = 0});和蜜蜂開心。謝謝你的回覆! – 2011-04-04 08:28:35

+0

所以答案是**是的,你可以** – 2011-04-04 08:30:18

+1

調用'FunctionX(new MyParams(){Param2 = 0});'將與FunctionX(new MyParams())相同;' – Jaymz 2011-04-04 08:30:56

2

當初始化struct,所有成員都將被初始化爲默認值:

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

這將留給你:

參數1 == 0;
Param2 == 0;
Param3 ==「Test」;
Param4 == null;

+0

謝謝!它很明顯) – 2011-04-04 08:33:41