如何用字符串格式引用变量?

时间:2015-03-26 20:46:46

标签: c# repeat

很多时候我想通过使用字符串格式来自动化某些语句,但遗憾的是它不起作用!

例如,如果我有这段代码:

Textbox1.Text = "";
Textbox2.Text = "";
Textbox3.Text = "";

如何通过以下方式获得相同的结果:

for ( int i = 1; i < 4; ++i )
    string.Format( "Textbox{0}.Text", i ) = "";

上面的代码是完全错误的,我的目标是让问题清楚。

更新:基本上是指带有字符串的变量

2 个答案:

答案 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();
    }

但是你应该在任何情况下枚举处理项,并在编译时知道属性/方法名。否则,请继续使用反射。