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

C# 如何使用字符串格式引用变量?,c#,repeat,C#,Repeat,很多时候,我想通过使用字符串格式来自动化一些语句,但不幸的是,它不起作用 例如,如果我有以下代码: 我如何通过这样做达到同样的效果: for(int i=1;i

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

例如,如果我有以下代码:

我如何通过这样做达到同样的效果:

for(int i=1;i<4;++i)
string.Format(“Textbox{0}.Text”,i)=”;
上面的代码是完全错误的,我的目标是把问题弄清楚


更新:基本上是指asp.net中带有字符串的变量,您可以使用父控件的FindControl方法创建这些文本框。例如:

for ( int i = 1; i < 4; ++i )
    (Page.FindControl("Textbox" + i) as Textbox).Text = "";
for(int i=1;i<4;++i)
(Page.FindControl(“Textbox”+i)作为Textbox)。Text=”“;

您可以使用
动态

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

但无论如何,您都应该枚举处理项,并在编译时知道属性/方法名称。否则,继续使用反射。

创建一个TextBoxesWidows表单或asp.net的数组/列表?@stuartd:谢谢你的回复,任何东西,即使是控制台应用程序,使用哈希表怎么样?!!控制台应用程序中没有控件。太好了,如果它们不是文本框呢?我指的是其他不属于类型控制的东西!asp.net中的所有内容都继承自控件。如果它不是一个文本框,那么你可以将它强制转换为任何你想要的。在这种情况下,作为操作符比简单的强制转换好吗?很好的解决方案。但是,当使用FindControl时,请记住它是递归的-您必须从最外层的控件开始,然后循环遍历它的所有子控件,等等。如果面板中有文本框,当您只查看窗口上的控件时,将找不到它。但是你可以用递归控制格式化程序做一些很棒的事情——我过去有过,但现在再也不能访问代码了。@CindyH-是的,很高兴指出这一点。通常我将控件放在父面板中。然后,如果您想跳过递归路由,我会执行Panel1.FindControl(“txt1”)等操作。
for ( int i = 1; i < 4; ++i )
    (Page.FindControl("Textbox" + i) as Textbox).Text = "";
    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();
    }