C#可以动态定义变量吗

tjut2008 2010-12-25 09:19:51
举个简单的例子说明:比如我想定义一个整型变量,但是这个变量的名字不知道,程序运行的过程中获取,取得这个名字后定义该变量,是否可以实现?如何实现呢?
...全文
1013 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
wyxhelen 2012-02-06
  • 打赏
  • 举报
回复
动态变量学习中,有点明白了。
aqgsh 2010-12-27
  • 打赏
  • 举报
回复
我真知楼主的意思,不过我不会,呵呵,以前使用asp时好像可以。我来把楼主的意思说一个

for (int i=0;i<10;i++)
{
string str(i);
}

这样就可以意思10个变量了,分别为str0.str1......str9,不过这个显然不行

aqgsh 2010-12-27
  • 打赏
  • 举报
回复
10楼的sp1234,老是看见你,你很牛啊!崇拜!看看我的帖子吧,我发的几个帖子都没人会,真晕!
nbbkim 2010-12-27
  • 打赏
  • 举报
回复
好像不行,不能通过编译。 只能一开始就指定变量的名称。
ybhcolin 2010-12-27
  • 打赏
  • 举报
回复
想必楼主讲的是类型变量与弱类型变量吧.

在.net 4.0 中,有dynamic关键字,可以声明动态变量
macooidle 2010-12-26
  • 打赏
  • 举报
回复
能不能具体说说需求?这样太抽象
zhangcong002 2010-12-26
  • 打赏
  • 举报
回复
string MyValue= "6.1";
string MyType= "System.Double ";
object value=Convert.ChangeType(MyValue,Type.GetType(MyType));
反射
  • 打赏
  • 举报
回复
可以动态写程序。

甚至,可以帮lz自动完成作业。
a184485789 2010-12-26
  • 打赏
  • 举报
回复
object类型的二维数组,不知道能不能实现
tjut2008 2010-12-25
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 wuyq11 的回复:]
public string str = "";
private void button1_Click(object sender, EventArgs e)
{
string s="str";
this.GetType().GetField(s).SetValue(this, "");

}
[/Quote]
还不是这个意思.再解释一下:一般来说程序运行过程中我们定义一个变量,写程序的时候这个变量名字是已知的如,x,y等等,这些变量在进行编译的时候都是已知的.我的意思是只有在程序实际运行的时候才能知道这个变量名,然后定义,再使用,也就是说编译的时候无法知道其名字.
机器人 2010-12-25
  • 打赏
  • 举报
回复
那接下来的处理,整个代码都变成string,用CodeDOM。。。说的再具体些。。。
像下面蓝色部分的代码。

var csCodeProvider = new CSharpCodeProvider();
var csParams = new CompilerParameters();
var source = "public class MainClass { public static object Eval() { return (#exp#); } }";
source = source.Replace("#exp#", exp);
csParams.CompilerOptions = "/t:library";
csParams.GenerateInMemory = true;

var csResults = csCodeProvider.
CompileAssemblyFromSource(csParams, source);
if (csResults.Errors.Count > 0)
{
Console.WriteLine(csResults.Errors[0].ToString());
return;
}

var ass = csResults.CompiledAssembly;
var type = ass.GetType("MainClass");
var result = type.InvokeMember("Eval", BindingFlags.InvokeMethod,
null, null, null);

Console.WriteLine("{0} = {1}", exp, result);

tjut2008 2010-12-25
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 wuyq11 的回复:]
string MyValue= "6.1";
string MyType= "System.Double ";
object value=Convert.ChangeType(MyValue,Type.GetType(MyType));
反射
[/Quote]
不是这个意思...
wuyq11 2010-12-25
  • 打赏
  • 举报
回复
public string str = "";
private void button1_Click(object sender, EventArgs e)
{
string s="str";
this.GetType().GetField(s).SetValue(this, "");

}
tjut2008 2010-12-25
  • 打赏
  • 举报
回复
大概的意思是程序运行过程中产生一个字符串比如是"student",能不能用这个字符串作为变量名定义一个整型变量呢?请指教!
机器人 2010-12-25
  • 打赏
  • 举报
回复
既然叫变量。。。名字就按照程序意思起一个名字吧。

比如:

object value = ...
wuyq11 2010-12-25
  • 打赏
  • 举报
回复
string MyValue= "6.1";
string MyType= "System.Double ";
object value=Convert.ChangeType(MyValue,Type.GetType(MyType));
反射
PitTroll 2010-12-25
  • 打赏
  • 举报
回复
名字不知道?

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧