2015-03-26 2 views
0

Много раз я хочу, чтобы автоматизировать некоторые инструкции с использованием форматирования строк, но, к сожалению, это не сработает!Как обратиться к переменной со строковым форматом?

, например, если у меня есть этот код:

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

как я могу достичь тех же результатов, делая что-то вроде этого:

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

код выше является совершенно неправильным, моя цель состояла в том, чтобы сделать вопрос понятным.

Update: в основном со ссылкой на переменную со строкой

+5

Создать массив/список текстовых полей – EZI

+2

Вдовы формы или asp.net? – stuartd

+0

@stuartd: спасибо за ответ, что угодно, даже если это консольное приложение – Focus

ответ

1

в ASP.Net, вы можете использовать метод FindControl родительского контроля этих текстовых полей. Такие, как:

for (int i = 1; i < 4; ++i) 
    (Page.FindControl("Textbox" + i) as Textbox).Text = ""; 
+0

отлично, а если бы они не были текстовыми полями? я имею в виду что-то еще не типа Control! – Focus

+0

Ну, все в asp.net наследуется от Control. Если это не текстовое поле, вы можете отбросить его на все, что захотите. –

+0

Является ли оператор лучше, чем простой приведение в этом случае? –

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

Но вы должны перечислить пункты обработки в любом случае и знать имена свойства/метода во время компиляции. В противном случае, продолжайте использовать рефлексию.

Смежные вопросы