проблема с использованием return () для нескольких значений - PullRequest
0 голосов
/ 07 января 2011

Я вызываю функцию как:

string judge1 = abs.getjud1(this.HiddenField4, this.TextBox3);

Вызываемая функция:

public string getjud1(HiddenField HiddenField4, TextBox TextBox3)
{
    String dbDate = DateTime.ParseExact(TextBox3.Text, "dd/mm/yyyy", null).ToString("yyyy-mm-dd");

    try
    {
        OdbcConnection casetype = new OdbcConnection("Driver={MySQL ODBC 3.51 Driver};Server=10.155.160.130;Database=testcase;User=root;Password=;Option=3;");
        casetype.Open();

        //*********to get jud1
        string jud1query = "select jname from testcase.orddetpabak,testcase.judge where orddetpabak.jud1 = judge.jcode and fil_no=? and orderdate=?;";

        //*********to get jud1
        OdbcCommand jud1cmd = new OdbcCommand(jud1query, casetype);
        jud1cmd.Parameters.AddWithValue("?", HiddenField4.Value);
        jud1cmd.Parameters.AddWithValue("?", dbDate);
        using (OdbcDataReader jud1MyReader = jud1cmd.ExecuteReader())
        {
            while (jud1MyReader.Read())
            {

                judge1 = jud1MyReader["jname"].ToString();
                Globals.jjj1= "J";
            }
        }

    }
    catch (Exception ep)
    { }

    return judge1;
}

Я хочу вернуть jud1 и Globals.jjj1 , возможно ли это сделать? Если да, то как это сделать?

Ответы [ 5 ]

1 голос
/ 07 января 2011
0 голосов
/ 07 января 2011

Поскольку C # является объектно-ориентированным языком, почему бы просто не создать объект, содержащий все значения, которые вы хотите вернуть? Таким образом, у вас есть только одна переменная для оператора return, но у вас есть доступ ко всем требуемым значениям.

0 голосов
/ 07 января 2011

Не совсем уверен, что вы имеете в виду, но если вы хотите вернуть несколько значений, вы можете использовать ключевые слова out или ref.

Ключевое слово

Ключевое слово Ref

void SomeFunction()
{
    int value1;
    int value2;
    value1 = SomeOtherFunction(out value2);
    //Value1 now equals 21, value2 equals 25.
    //You can use the same thing for strings.
}

int SomeOtherFunction(out int value2)
{
    value2 = 25;
    return 21;
}
0 голосов
/ 07 января 2011

Вы можете вернуть только один объект из вашего метода, но у вас есть две опции:

  1. Создайте новый объект, содержащий две строки, и верните этот объект из метода вместо строки.Таким образом, ваш составной объект будет содержать нужные значения.
  2. Создайте новый параметр, который вы пометите как out, и установите значение этого параметра внутри метода.Переменная, передаваемая в метод в качестве параметра, будет также обновлена ​​вне метода.
0 голосов
/ 07 января 2011

Создайте объект с двумя строковыми значениями, представляющими нужные значения, а затем верните объект.

public MyCustomObject getjud1(HiddenField HiddenField4, TextBox TextBox3)
...