Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Возвращаемые значения


Автор: Franz1981 13.10.2008, 14:21
Возникла надобность следующей конструкции:

Код

 int DC(float x,float y,float z)
        {
            float xnew,ynew;
             .......
             .......
            return xnew;
            return ynew;

       }


принимает 3 координаты и возвращает 2.
что я сделал не так, что не могу использовать её например так:

Код

gr.DrawLine(FillFat, x1, y1, DC(0,150,0));


то есть необходимо чтобы DC врзвращала x и у через запятую, чтоли так)

Автор: elbjarn 13.10.2008, 14:30
Franz1981, ваше понимание механизма возврата значений из функции  в корне неверно. функция может возвращать одно-единственное значение, не считая неявных возвратов при использовании ключевых слов out и ref (передача параметров по ссылке для их инициализации или изменения).
для того, чтобы ваша функция возвращала, к примеру, два int, упакуйте их в структуру или класс, и возвращайте объект этого класса.
кстати, в вашем случае такой класс уже есть - это Point.
Код

Point DC(float x,float y,float z)
        {
            float xnew,ynew;
             .......
             .......
            return new Point(xnew, ynew);
       }
...
Point p = DC(0,150,0);
gr.DrawLine(FillFat, x1, y1, p.X, p.Y);


и кстати в функции не может быть двух return. это ключевое слово означает "немедленно прекратить выполнение функции и вернуть значение, передаваемое оператору return".

на всякий случай приведу пример реализации класса Point
Код

        public class Point
        {
            public int X;
            public int Y;
            public Point(int X, int Y)
            {
                this.X = X;
                this.Y = Y;
            }
        }

свойства оформите самиsmile

Автор: Franz1981 13.10.2008, 16:45
сапсибо!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)