[英]How to use string as variable name in c#
我有一个viewstate属于价值,如:
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'隐式转换为'string'
我想要文本框变量名称,如txtmonday,txttuesday
动态。 有什么办法可以分配变量名吗???
不,你不能。 至少没有反射,你不应该在这里使用反射。 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
变量名称只是为您提供了一种引用变量的方法。 这就是它的全部。 您创建的对象不知道哪些变量(如果有)包含对它的引用。
您无法在运行时以您尝试的方式声明对象。 您可以在星期一的索引0
和星期日的索引6
处存储数组/ List<T>
工作日。您可以使用所需的字符串名称给出元素的id。
List<TextBox> weekList = new List<TextBox>();
weekList.Add(new TextBox());
weekList[0].ID = "txt" + ViewState["temp"].ToString();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.