2009-12-23 104 views
0

如何把這段代碼轉換:C#代碼重構?

MYCLASS ebt = new MYCLASS(); 
ebt.cbStruct = Marshal.SizeOf(ebt); 

到這一點:

MYCLASS ebt = new MYCLASS(cbStruct = Marshal.SizeOf('What comes here?')); 

回答

2

獲取,而不是類型的大小:

MYCLASS ebt = new MYCLASS { cbStruct = Marshal.SizeOf(typeof(MYCLASS)) }; 

還要注意括號而非小括號使用初始化器語法。

+0

糟糕!在提出問題之前,我做了同樣的事情,沒有任何錯誤,肯定和它不工作,現在是。 – 2009-12-23 19:12:42

+0

你也猜對了,MYCLASS是一個結構體,所以所有的構造函數都是錯誤的。 +10更多。 – 2009-12-23 19:18:15

0

使用MYCLASS構造函數,一個cbStruct參數。

3

修改MYCLASS構造函數,

public MYCLASS() 
{ 
    cbStruct = Marshall.SizeOf(this); 
} 
+0

itowlson的例子的不同變化。 – Chris 2009-12-23 19:07:12

+0

只需要添加,只有當MYCLASS是一個類時才允許。許多互操作類型都是結構體,並且C#中不能指定結構的默認構造函數 - 它始終將所有字段初始化爲0。 – itowlson 2009-12-23 19:08:21