让我们说说fields[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();
}
不是在寻找直接的答案,但是有些提示可以!感谢您的所有帮助!
答案 0 :(得分:1)
不,C#是一种静态语言,没有这种类型的“宏”替代成员名称。
您可以使用反射来获取属性,将PropertyInfo
对象保存在字典中,并再次使用反射 来动态设置属性,但是听起来很丑陋(而且很难调试),可以节省一些重复的代码。
或者,如果您控制Savestate
类,请将其更改为数据结构,而不要具有命名属性。