直接使用字符串作为变量名是不可行的。你可以使用if,或者switch代码块。
if(str=="a5“)
{
system.console.writeline(a5);
}
else if(str=="a4")
{
system.console.writeline(a4);
}
例如这样。
double a1 = 0;
double a2 = 0;
double a3 = 0;
double a4 = 0;
double a5 = 0;
private void button2_Click(object sender, EventArgs e)
{
setFValue("a1",1);//操作变量a1
setFValue("a2",2.22);//操作变量a2
setFValue("a3",333.44);//操作变量a3
}
public void setFValue(string Fname,double value)
{
Type type = this.GetType();
FieldInfo property = type.GetField(Fname, BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static);
property.SetValue(this,value);
}
注:引用 using System.Reflection;
switch (str)
{
case"a1": 用a1操作;break
case"a2": 用a2操作;break
case"a3": 用a3操作;break
case"a4": 用a4操作;break
derfault:用默认值操作;break;
}
这是不可以的,不像javascript那样可以用eval来计算一个表达式,如果你想要这样的效果,可以将其定义为数组,然后传入下标来获得某个值,或者就用switch...case语句。
double a1 = 0;
double a2 = 0;
double a3 = 0;
double a4 = 0;
double a5 = 0;
if(str==a5)
{
//操作语句
}
else if(str==a4)
{
//操作语句
}