C#中如何将一个字符串转化为变量,这个变量是已经定义的。

例如定义有5个变量doublea1=0;doublea2=0;doublea3=0;doublea4=0;doublea5=0;当stringstr=“a5”时,我希望现... 例如定义有5个变量
double a1 = 0;
double a2 = 0;
double a3 = 0;
double a4 = 0;
double a5 = 0;
当string str = “a5”时,我希望现在操作的是a5这个变量,当str = “a4”时,就希望操作的是a4变量。
在线等答案,谢谢各位大侠。
展开
 我来答
徐州小夏
推荐于2016-01-08 · 超过20用户采纳过TA的回答
知道答主
回答量:49
采纳率:0%
帮助的人:44.3万
展开全部
直接使用字符串作为变量名是不可行的。你可以使用if,或者switch代码块。

if(str=="a5“)
{
system.console.writeline(a5);
}
else if(str=="a4")
{
system.console.writeline(a4);
}

例如这样。
追问
主要是我在目前的程序中有31个这样的变量,如果使用if或者switch就会很多代码,所以我想这样。
我是一个月31天,定义了31个变量,我的目的是统计一个月内每天的登陆总时长。
if(Time.date == 1)
{
a1+= 登出时间 - 登陆时间;
}
else if(Time.date ==2)
{
a2+=..
这样的结构,所以我不愿意写31遍,我就想看可以否这样写
string str = “a”+Time.date;
这样组成一个变量,然后将str的值直接转换成上面的变量。
追答
不妨定义一个logintime[31],之后把每天的时间存放在其中。
此时代码可直接写为:
logintime[Time.date-1]+=登出时间 - 登陆时间;

变量名相似,只是下标不同的时候,要立即想到将其放置在数组中。存取都很方便。
天远刘超
2011-06-11 · TA获得超过131个赞
知道答主
回答量:143
采纳率:0%
帮助的人:0
展开全部
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;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友302d1a9
2011-06-18
知道答主
回答量:25
采纳率:0%
帮助的人:0
展开全部
switch (str)
{
case"a1": 用a1操作;break
case"a2": 用a2操作;break
case"a3": 用a3操作;break
case"a4": 用a4操作;break
derfault:用默认值操作;break;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
刑成始刚捷
2020-08-26 · TA获得超过1238个赞
知道小有建树答主
回答量:1806
采纳率:100%
帮助的人:8.3万
展开全部
这是不可以的,不像javascript那样可以用eval来计算一个表达式,如果你想要这样的效果,可以将其定义为数组,然后传入下标来获得某个值,或者就用switch...case语句。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
萨瓦迪卡滴滴滴d1a9e
2011-06-13
知道答主
回答量:26
采纳率:0%
帮助的人:6.3万
展开全部
double a1 = 0;
double a2 = 0;
double a3 = 0;
double a4 = 0;
double a5 = 0;
if(str==a5)
{
//操作语句

}
else if(str==a4)
{
//操作语句
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式