繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM