10

是否可以在 C# 中使用动态变量(不确定命名)?

在 PHP 中,我可以做到

$var_1 = "2";
$var_2 = "this is variable 2";

$test = ${"var_".$var_1};

echo $test;

output: this is variable 2;

我们可以在 C# 中做到这一点吗?

4

5 回答 5

10

在 C# 中,您使用字典将值与字符串相关联。

于 2009-08-15T21:30:00.150 回答
9

不,基本上。编译器不保证方法变量将存在(以书面形式),或名称......

如果它们是字段(实例或静态),那么您可以使用反射来获取值;但不是方法变量。对于您想要的,也许使用字典作为替代品?

var vars = new Dictionary<string,object>();
vars["var_1"] = "2";
vars["var_2"] = "this is variable 2";

Console.WriteLine(vars["var_" + vars["var_1"]]);
于 2009-08-15T21:33:33.230 回答
1

不确定这是否适用于局部变量(很可能因为它们被存储为索引而不适用),但您可以通过反射访问类属性。

于 2009-08-15T21:34:05.040 回答
1

如果你var是一个类字段,那么你可以使用GetField类中的静态方法Type来获取字段信息,例如它的当前值。

于 2009-08-15T21:42:11.340 回答
1

您不是在寻找简单的数组吗?

string[] myArray = new string[2];

myArray[0] = "2";
myArray[1] = "this is variable 2"

否则字典是要走的路。

于 2009-08-15T22:45:59.420 回答