在C#中是否有f'{}'的等价物

时间:2018-09-25 20:51:14

标签: c# python-3.x

我来自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;
}

1 个答案:

答案 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等是现有的类成员(它不会创建它们)并且不在函数本地时,此方法才有效。如果您有局部变量,那么您基本上就走运了。