为了账号安全,请及时绑定邮箱和手机立即绑定

不输入完整的变量名称,但部分名称由另一个字符串值表示

不输入完整的变量名称,但部分名称由另一个字符串值表示

C#
慕虎7371278 2022-06-12 15:04:04
可以说 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该类,请将其更改为数据结构而不是具有命名属性。


查看完整回答
反对 回复 2022-06-12
  • 1 回答
  • 0 关注
  • 90 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信