C#可以实现动态变量名吗
展开全部
谁说了不可以,我看到你在CSDN也提问过,依据你的理解,你这么写:
int ka=0;
String bn1="";
String bn2="";
for(int i=0;2;i++)
{
ka+=i;
"bn"+i.ToString()=ka.ToString();
}
问题有两个:
表达式不能作为变量,变量是一个量,量与表达式有着根本的区别
变量肯定是有返回值的,绝对不是字符串常量,而是字符串变量
明显你用无意义的东西误导了自己,变量根本就不是常量,你就是要他动态变化名称也最起码要把他实例化成变量。我举一个有意义的例子,创建5个按钮,名称是btn1~btn5;已经创建好了,我不想动,再拖一个按钮,动态给他们订阅事件,让用户点一下他们任何一个就显示自己的bn后面的id:
for(int i=1;i<6;i++)
{
Button btn=(Button)this.Controls["btn"+i.ToString()];
btn.Click+=(object sen,EventArgs es)=>
{
textBox1.Text=btn.Name.SubString(3,1);
}
}
我把按钮实例成了一个变量,变量动态修改了名称,就没动态变量一说。
2017-10-11
展开全部
楼上的回答很到位,但我以前也有过这样的问题,后来我找到了一种解决方案。使用“动态编译”就可以实现你要的效果。比如将字符串"bn" + i.ToString() + "=" + ka.ToString() + ";"(这里我引用楼上的代码)作为代码运行就可以得到动态变量了,有点类似于JS脚本里的Eval函数。具体实现可以在百度上搜索动态编辑,相关文章很多,还有源码,复制下来看明白改改就能做的。除了动态变量名之外,还可以实现动态方法名和动态类等等,但我不推荐,因为效率低,而且局限性大,跨域访问要配合反射使用,用起来比较麻烦。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不能,但是现在.net 3.5 支持动态类型
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2017-02-09
展开全部
不能。但可以具体看你的需求,用其他方式达到功能。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
那你为什么不直接用字典之类的呢,要用什么动态变量名。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询