Aftab Iqbal Clips Ответов: 3

Как вернуть текстовое поле в цикле из класса с помощью ASP.NET с#


Привет Всем
Я возвращаю текстовое поле из класса, но когда я использую цикл while и возвращаю текстовое поле внутри цикла, я получаю ошибку следующим образом
не все пути кода возвращают значение
нужна помощь

Что я уже пробовал:

public class FormDesign
{
public TextBox txtbox(string textid)
        {
            TextBox txt = new TextBox();
            int i = 1;
            while (i<3)
            {
txt.ID = textid+i.ToString();
            txt.Text = "inserted from class"; 
            return txt;
        }
                                                                                                                                    }

}

3 Ответов

Рейтинг:
9

Aftab Iqbal Clips

я и сам это понял
если вы хотите вернуть несколько значений с помощью функции loop from, то вам придется создать функцию массива вместо обычной функции

public TextBox[] txtbox(int count)
        {
                                    TextBox[] txtbox;
            txtbox = new TextBox[count];
            int i = 0;
            while(i<txtbox.Length)
                        {
                TextBox t = new TextBox();
                txtbox[i] = t;
                txtbox[i].Text= "inserted textbox array"+i.ToString();
                mypanel.Controls.Add(txtbox[i]);
                i++;
            }
            return txtbox;
        }


Richard MacCutchan

Именно это и сказал вам вчера OriginalGriff.

Рейтинг:
1

Dave Kreskowiak

Итак, следуйте коду. Что происходит, когда код выпадает из системы? while петли для i это равно 3? Вот о чем говорит Ошибка.


Рейтинг:
0

OriginalGriff

Ошибка означает то, что она говорит: существует по крайней мере один маршрут через метод, который может привести к тому, что ничего не будет возвращено.
На практике это не может произойти, но ..... если я исправлю ваш отступ:

public TextBox txtbox(string textid)
    {
    TextBox txt = new TextBox();
    int i = 1;
    while (i<3)
       {
       txt.ID = textid+i.ToString();
       txt.Text = "inserted from class"; 
       return txt;
       }
    }
Система этого не делает i всегда будет меньше, чем 3, поэтому он предполагает, что есть случаи, когда цикл вообще не вводится, и в этом случае нет возвращаемого значения.

Но... вы не можете вернуть несколько значений, и если вы используете return внутри цикла метод немедленно завершает работу и больше ничего не делает - так что ваш цикл (который никогда бы не вышел, если бы не return утверждение в значительной степени бессмысленно, поскольку весь ваш метод оценивает это:
public TextBox txtbox(string textid)
    {
    TextBox txt = new TextBox();
    txt.ID = textid + "1";
    txt.Text = "inserted from class"; 
    return txt;
    }

Если вы хотите вернуть несколько значений, вам нужно изменить сигнатуру метода, чтобы он возвращал коллекцию : a TextBox[] или List<TextBox> возможно, а потом собрать коллекцию перед выходом.