python-3.x c#中是否有f '{}'的等价物

qnzebej0  于 2023-08-08  发布在  Python
关注(0)|答案(2)|浏览(212)

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

k3bvogb1

k3bvogb11#

在理想的世界中,你永远不会给变量编号,而只使用数组(或其他集合)。所以你会有:

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等。是现有类成员(它不会创建它们),并且不是函数的本地成员。如果你有局部变量,你基本上就不走运了。

7xllpg7q

7xllpg7q2#

这是一个String Interpolation的示例。$"num{i}"这样的东西应该适合你

相关问题