看板 C_Sharp 關於我們 聯絡資訊
: 我宣告一個struct... : struct Student : { : [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)] : public int[] No; : } : : 然後在Main裡面 : Student[] stu = new Student[50]; : 則 : stu[1].No[2] = 5; : 不知道這個式子為什麼會錯誤?? : 是不是沒有new? : 換用class可以解決嗎? : = ="剛學C#不太熟...麻煩高手指教...謝謝!! : : 推 tomex:你的No[]並未初始化,記得要先new才能assign值! 10/16 20:11 不好意思,我也是剛學c#,也想請問一下 我有查到他是因為沒有被實體化,要new才能使用, 但是我很疑惑,No不是已經用MarshalAs轉成陣列了嗎? 如果這個只能當作指標,為何還要給予SizeConst長度? 如果是為了讓Marshal.Sizeof計算struct的大小,那他不就已經是陣列才要將陣列的 長度大小進去嗎? 我有使用Marshal.Sizeof檢查,確定陣列的長度會算入結構裡面,所以看起來應該是 建立了陣列,才會這樣。但實際上,我卻必須new給No一段空間,才能使用,用起來卻 像是指標。 我如果用string, [MarshalAs(UnmanagedType.ByValStr)]轉換的話,就不需要再new, 雖然使用sreing本來就可以直接賦值,但總是覺得怪怪的,不太懂Array為何不是被定義 成陣列,而是變成類似指標? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 203.66.251.14 ※ 編輯: clarkman 來自: 203.66.251.14 (01/25 10:48)