C#可以实现动态变量名吗

 我来答
创作者zUzVB1Sl31
推荐于2017-10-12 · 编程类资料、英语学习资料
创作者zUzVB1Sl31
采纳数:1331 获赞数:5975

向TA提问 私信TA
展开全部

谁说了不可以,我看到你在CSDN也提问过,依据你的理解,你这么写:

int ka=0;
String bn1="";
String bn2="";
for(int i=0;2;i++)
{
   ka+=i;
   "bn"+i.ToString()=ka.ToString();
}

问题有两个:

  1. 表达式不能作为变量,变量是一个量,量与表达式有着根本的区别

  2. 变量肯定是有返回值的,绝对不是字符串常量,而是字符串变量

明显你用无意义的东西误导了自己,变量根本就不是常量,你就是要他动态变化名称也最起码要把他实例化成变量。我举一个有意义的例子,创建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函数。具体实现可以在百度上搜索动态编辑,相关文章很多,还有源码,复制下来看明白改改就能做的。除了动态变量名之外,还可以实现动态方法名和动态类等等,但我不推荐,因为效率低,而且局限性大,跨域访问要配合反射使用,用起来比较麻烦。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Imissyou1989918
2017-02-10 · 功不求戾,但求有恒,明天的幸福,今天修;
Imissyou1989918
采纳数:41 获赞数:25

向TA提问 私信TA
展开全部
不能,但是现在.net 3.5 支持动态类型
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2017-02-09
展开全部
不能。但可以具体看你的需求,用其他方式达到功能。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
syht2000
高粉答主

2017-02-09 · 关注我不会让你失望
知道大有可为答主
回答量:3万
采纳率:79%
帮助的人:1.4亿
展开全部
那你为什么不直接用字典之类的呢,要用什么动态变量名。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 3条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式