看板 C_Sharp 關於我們 聯絡資訊
public struct AAA { public string BBB; public string BBB2; public string BBB3; public string BBB4; } public struct CCC { public AAA C1; public AAA C2; public AAA C3; public AAA C4; public AAA C5; } public static void func(ref CCC data,int a) { AAA[] loc_data=new AAA[] { data.C1,data.C2,data.C3,data.C4,data.C5 }; if(a<5 && a>=0) { loc_data[a].BBB="test1"; } } =============================================== 請問一下C#有沒有法子做到類似指標的動作, 目前想不到在函數內將資料設定進去的方法 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 59.127.67.17 ※ 文章網址: https://www.ptt.cc/bbs/C_Sharp/M.1521513793.A.1E5.html
YahooTaiwan: https://tinyurl.com/y9b39yuo 03/20 10:49
justinj: 謝謝提供...不過完全不能用..無法用到指標陣列上 03/20 11:06
ssccg: ref就已經是pass by ref了,要在函式內設定資料沒問題啊 03/20 11:08
ssccg: 看你的程式你的問題是想把data用array的方式去操作,但是 03/20 11:09
ssccg: CCC是struct,你設給loc_data時就是copy by value了,之後 03/20 11:09
ssccg: 你怎麼改loc_data都沒用吧? 不如先說清楚你是要做什麼 03/20 11:09
public static void func(ref CCC data,int a) { AAA[] *loc_data= { &data.C1,&data.C2,&data.C3,&data.C4,&data.C5 }; if(a<5 && a>=0) { loc_data[a]->BBB="test1"; } } 原本是要寫成像這樣.... ※ 編輯: justinj (59.127.67.17), 03/20/2018 11:16:56
ssccg: 如果你可以改CCC,一開始就在CCC裡面放array就好了吧 03/20 11:44
justinj: 沒法子改CCC...CCC實際上全部都是機器名 03/20 11:46
justinj: 謝謝幫忙..我最後是拆成2個函數處理..原本它的寫法程式碼 03/20 11:48
justinj: 太長 03/20 11:48
ssccg: 不確定你最後是用什麼改法,如果C1, C2...不是很多的話我會 03/20 14:14
ssccg: 直接switch a來選Cx傳到另一個改AAA內容的函數 03/20 14:55
justinj: 一堆if+func 03/20 16:58
yzfr6: 關鍵字:event delegate 03/24 00:48