如何在c#中使用字符串作为变量名

时间:2014-04-07 06:11:53

标签: c# asp.net .net

我的视图状态属于以下值:

string temp; ViewState["temp"] = dc.ColumnName.ToString();

这会返回工作日,例如:Monday,tuesday,wednesday

现在我在这里使用这个值:

string a = "txt" + ViewState["temp"].ToString();
TextBox a = new TextBox();

但它给了我错误

  

无法隐式转换类型&System; Web.UI.WebControls.Textbox'到'字符串'

我想要动态地设置像txtmonday,txttuesday这样的文本框变量名称。 有什么办法可以分配变量名吗???

2 个答案:

答案 0 :(得分:3)

不,你不能。至少没有反射,你不应该在这里使用反射。 C#中的变量是编译时的概念。 (即使使用反射,它也只适用于字段,而不适用于局部变量。)

如果您想要集合值,请使用集合...例如一个List<T>Dictionary<TKey, TValue>。例如,您可以使用List<TextBox>(可通过索引访问)或Dictionary<string, TextBox>来访问字符串键("monday""tuesday"或您想要的任何内容)

如果您实际上只是创建了一个 TextBox,那么变量名是什么意思?只需使用:

TextBox textBox = new TextBox();
// Do appropriate things with the TextBox, possibly using ViewState

变量名只是为您提供了一种引用变量的方法。这就是它的全部。您创建的对象并不知道哪些变量(如果有)包含对它的引用。

答案 1 :(得分:0)

您可以在运行时以您尝试的方式声明对象。您可以在星期一从索引0和星期日在索引6处将数据/ List<T>中的工作日存储起来。您可以使用所需的字符串名称给出元素的ID。

List<TextBox> weekList = new List<TextBox>();
weekList.Add(new TextBox());
weekList[0].ID  =  "txt" + ViewState["temp"].ToString();