作者justinj (黑旋風)
看板C_Sharp
標題[問題] ref跟指標
時間Tue Mar 20 10:43:05 2018
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://webptt.com/m.aspx?n=bbs/C_Sharp/M.1521513793.A.1E5.html
2F:→ justinj: 謝謝提供...不過完全不能用..無法用到指標陣列上 03/20 11:06
3F:→ ssccg: ref就已經是pass by ref了,要在函式內設定資料沒問題啊 03/20 11:08
4F:→ ssccg: 看你的程式你的問題是想把data用array的方式去操作,但是 03/20 11:09
5F:→ ssccg: CCC是struct,你設給loc_data時就是copy by value了,之後 03/20 11:09
6F:→ 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
7F:→ ssccg: 如果你可以改CCC,一開始就在CCC裡面放array就好了吧 03/20 11:44
8F:→ justinj: 沒法子改CCC...CCC實際上全部都是機器名 03/20 11:46
9F:→ justinj: 謝謝幫忙..我最後是拆成2個函數處理..原本它的寫法程式碼 03/20 11:48
10F:→ justinj: 太長 03/20 11:48
11F:→ ssccg: 不確定你最後是用什麼改法,如果C1, C2...不是很多的話我會 03/20 14:14
12F:→ ssccg: 直接switch a來選Cx傳到另一個改AAA內容的函數 03/20 14:55
13F:→ justinj: 一堆if+func 03/20 16:58
14F:→ yzfr6: 關鍵字:event delegate 03/24 00:48