可以说 iffields[0].ToString()的字符串值为"abc". 有没有办法Classname.abc通过替换"abc"来声明fields[z].ToString()。所以它看起来像,Classname.fields[z].ToString();所以最初是这样做的,如下所示,我认为这是一种低效的方法(我有 200 行代码要输入)。Split_CsvData[z]包含我要向变量声明的信息(例如Savestate.one_one_one)for (int z = 0; z < Split_CsvData.Length; z++){ if(z==0) Savestate.one_one_one_grouping = Split_CsvData[z].ToString(); else if (z == 1) Savestate.one_one_two_grouping = Split_CsvData[z].ToString(); else if (z == 2) Savestate.one_one_three_grouping = Split_CsvData[z].ToString(); else if(z == 3) Savestate.one_one_three_grouping = Split_CsvData[z].ToString(); else if (z == 4) Savestate.one_one_four_grouping = Split_CsvData[z].ToString(); 我想知道是否可以这样做?fields[z].ToString()包含变量名的后面部分,例如。(one_one_one或one_one_two)for (int z = 0; z < Split_CsvData.Length; z++){ Savestate.fields[z].ToString().Name = Split_CsvData[z].ToString();}不是在寻找直接的答案,而是一些提示会做!感谢您的帮助!
1 回答
30秒到达战场
TA贡献1828条经验 获得超6个赞
不,C# 是一种静态语言,没有这种类型的“宏”替代成员名称。
您可以使用反射来获取属性,将PropertyInfo
对象保存在字典中,然后再次使用反射来动态设置属性,但这听起来像一种丑陋(且难以调试)的方式来节省一些稍微重复的代码。
或者,如果您可以控制Savestate
该类,请将其更改为数据结构而不是具有命名属性。
- 1 回答
- 0 关注
- 90 浏览
添加回答
举报
0/150
提交
取消