我来自Python,正在处理代码,该代码创建了多个具有相同名称的变量,并在末尾附加了整数,并且需要在C#中复制Python的f'something here {variable}'方法。我该怎么办?
即
int num1 = 1;
int num2 = 2;
int num3 = 3;
int num4 = 4;
等...
有没有办法做类似的事情
for (int i=1;i<5;i++)
{
int f'num{i}' = i;
}
答案 0 :(得分:4)
在理想世界中,您永远不会对变量编号,而只会使用数组(或其他集合)。因此,您将拥有:
for (int i=0;i<5;i++)
{
num[i] = i;
}
要求您的变量列表改为一个可索引的变量(如数组)
int[] num = new int[5];
从字符串访问C#中的变量的唯一方法是使用反射(这是一个相当高级的概念,容易出错,效率不高)。话虽这么说,您会做类似的事情:
Type thisClass = this.GetType(); //Even better, typeof(WhateverClassThisIs);
for (int i=1;i<5;i++)
{
FieldInfo field = thisClass.GetField($"num{i}");
field.SetValue(this, i);
}
请注意,仅当num1
等是现有的类成员(它不会创建它们)并且不在函数本地时,此方法才有效。如果您有局部变量,那么您基本上就走运了。