作者erspicu (.)
看板C_Sharp
标题Re: [问题] ref跟指标
时间Tue Mar 20 22:10:10 2018
※ 引述《justinj (黑旋风)》之铭言:
: 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#有没有法子做到类似指标的动作,
: 目前想不到在函数内将资料设定进去的方法
可以用全C指标的写法 来达成 不过很怪异
按照你的需求 有更快的作法是 set 或是 get field by name
利用 reflection 就可以 google 关键字 c# struct set filed reflection
参考
https://tinyurl.com/yas7rmoy
基本上可以改成
if(a<5 && a>=0)
{
设定 data 里头 一个名为 "C"+a.ToString() 的 filed 内容成 test1
}
reflection平常用不到不知道哪里好用也不知道作啥用的
用到时候才觉得真是好物
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 219.69.91.220
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_Sharp/M.1521555014.A.2C8.html
1F:→ Litfal: 反射其中之一的用途,就是用来做一些感觉手作很蠢的事 03/20 23:23
2F:推 justinj: 谢谢提供 03/21 11:23
3F:推 ssccg: reflection本来就慢了,配struct还要box unbox copy... 03/21 11:30
4F:→ ssccg: 如果不是真的field太多,我是会选比较蠢的手作法啦.. 03/21 11:31
5F:→ ssccg: 当然实际上要看原po的应用场景这边需不需要考量效能 03/21 11:39
还是得看实际的状况来决定 至於效能的话 实测才准
极端情况下全改成unmanaged写法 当然是很怪异的下下策就是
※ 编辑: erspicu (60.248.56.185), 03/21/2018 12:24:52