作者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/cn.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