很多时候我想通过使用字符串格式来自动化某些语句,但遗憾的是它不起作用!
例如,如果我有这段代码:
Textbox1.Text = "";
Textbox2.Text = "";
Textbox3.Text = "";
如何通过以下方式获得相同的结果:
for ( int i = 1; i < 4; ++i )
string.Format( "Textbox{0}.Text", i ) = "";
上面的代码是完全错误的,我的目标是让问题清楚。
更新:基本上是指带有字符串的变量
答案 0 :(得分:1)
在asp.net中,您可以将父控件的FindControl方法用于这些文本框。如:
for ( int i = 1; i < 4; ++i )
(Page.FindControl("Textbox" + i) as Textbox).Text = "";
答案 1 :(得分:-3)
您可以使用dynamic
:
class Whatever { public string Text { get; set; } }
class It { public string Text { get; set; } }
class Can { public string Text { get; set; } }
class Be { public string Text { get; set; } }
static void Main()
{
var whatever = new Whatever();
var it = new It();
var can = new Can();
var be = new Be();
foreach (var item in new dynamic[] {whatever, it, can, be})
item.Text = item.ToString();
}
但是你应该在任何情况下枚举处理项,并在编译时知道属性/方法名。否则,请继续使用反射。