Поддерживает ли C # несколько возвращаемых значений? - PullRequest
13 голосов
/ 22 октября 2010

Это очень простой вопрос, и если то, что я думаю сделать, является сложным / сложным, то я не ожидаю, что вы будете вдаваться в подробности ... Я читал, что это может включать структуры, хэш или некоторые другие. другие страшные процедуры, которые я еще не получил. Если так, я уверен, что это скоро получит меня.

Работа с классами, методами и возвращаемыми значениями.

Я бы хотел, чтобы мой класс / метод возвращали Текущий час и Минуту. Достаточно просто, правда. Это правильно или правильно построено?

class MyClass
{
    public int GetHour (int hr, int min)
    {
        DateTime dt = DateTime.Now;
        int hour = dt.Hour;
        int minute = dt.Minute;

        return hour;
        return minute;

    }
}

И, вызывая его из Main(): Получение некоторых ошибок (No overload for method и Unreachable code detected)

static void Main ( string[] args )
{
    MyClass mc = new MyClass ();
    Console.WriteLine ("Hour: {0} \n Minute: {1}", mc.GetHour());   
    Console.ReadLine ();
}

Вопрос: я рядом?

Ответы [ 11 ]

0 голосов
/ 22 октября 2010

Вопрос, который я хотел бы задать, - почему вы хотите вернуть несколько значений?Возврат нескольких значений для меня означает наличие нескольких функций в функции, и это должно быть не так, поскольку это нарушает SRP .Но если эти возвращаемые значения связаны, возможно, они создают объект, который вам не хватает, и должны быть созданы вместо него?Или список с одним типом объекта.

Так что для краткости.Зачем?Инкапсулировать ваши возвращаемые значения в один объект?Не выполняйте несколько функций в одной функции.

РЕДАКТИРОВАТЬ: В вашем случае я бы даже не обернул вашу функциональность в функцию, просто напишите:

static void Main ( string[] args )
        {
        MyClass mc = new MyClass ();
        DateTime now = DateTime.Now;
        int hour = now.Hour;
        int min = now.Minute;
        Console.WriteLine ("Hour: {0} \n Minute: {1}", hour, min);

        Console.ReadLine ();
        }

И имя вашей функции GetHour не выполняет то, что говорит функция ... если оно говорит GetHour, оно должно возвращать час, а не час плюс минуту.

...