Читаем C# 4.0: полное руководство полностью

Модификатор параметра out подобен модификатору ref, за одним исключением: он служит только для передачи значения за пределы метода. Поэтому переменной, используемой в качестве параметра out, не нужно (да и бесполезно) присваивать какое-то значение. Более того, в методе параметр out считается неинициализированным, т.е. предполагается, что у него отсутствует первоначальное значение. Это означает, что значение должно быть присвоено данному параметру в методе до его завершения. Следовательно, после вызова метода параметр out будет содержать некоторое значение.

Ниже приведен пример применения модификатора параметра out. В этом примере программы для разделения числа с плавающей точкой на целую и дробную части используется метод GetParts() из класса Decompose. Обратите внимание на то, как возвращается каждая часть исходного числа.


// Использовать модификатор параметра out.

using System;

class Decompose {

  /* Разделить числовое значение с плавающей точкой на целую и дробную части. */

  public int GetParts(double n, out double frac) {

    int whole;

    whole = (int) n;

    frac = n - whole; // передать дробную часть числа через параметр frac

    return whole;    // возвратить целую часть числа

  }

}


class UseOut {

  static void Main() {

    Decompose ob = new Decompose();

    int i;

    double f;


    i = ob.GetParts(10.125, out f) ;


    Console.WriteLine("Целая часть числа равна " + i);

    Console.WriteLine("Дробная часть числа равна " + f);

  }

}


Выполнение этой программы дает следующий результат.


Целая часть числа равна 10

Дробная часть числа равна 0.125


Метод GetParts() возвращает два фрагмента информации. Во-первых, целую часть исходного числового значения переменной n обычным образом с помощью оператора return. И во-вторых, дробную часть этого значения посредством параметра fгас типа out. Как показывает данный пример, используя модификатор параметра out, можно организовать возврат двух значений из одного и того же метода.

Разумеется, никаких ограничений на применение параметров out в одном методе не существует. С их помощью из метода можно возвратить сколько угодно фрагментов информации. Рассмотрим пример применения двух параметров out. В этом примере программы метод HasComFactor() выполняет две функции. Во-первых, он определяет общий множитель (кроме 1) для двух целых чисел, возвращая логическое значение true, если у них имеется общий множитель, а иначе — логическое значение false. И во-вторых, он возвращает посредством параметров типа out наименьший и наибольший общий множитель двух чисел, если таковые обнаруживаются.


// Использовать два параметра типа out.

using System;

class Num {

  /* Определить, имеется ли у числовых значений переменных х и v общий множитель. Если имеется, то * возвратить наименьший и наибольший множители посредством параметров типа out. */

  public bool HasComFactor(int x, int y,

          out int least, out int greatest) {

  int i;

  int max = x < у ? x : y;

  bool first = true;

  least = 1;

  greatest = 1;

  // Найти наименьший и наибольший общий множитель.

  for(i=2; i <= max/2 + 1; i++) {

    if( ((y%i)==0) & ((x%i)==0) ) {

      if (first) {

        least = i;

        first = false;

      }

      greatest = i;

    }

  }

  if(least != 1)

    return true;

  else

    return false;

  }

}


class DemoOut {

  static void Main() {

    Num ob = new Num();

    int lcf, gcf;


    if(ob.HasComFactor(231, 105, out lcf, out gcf)) {

      Console.WriteLine("Наименьший общий множитель " +

            "чисел 231 и 105 равен " + lcf) ;

      Console.WriteLine("Наибольший общий множитель " +

            "чисел 231 и 105 равен " + gcf);

    }

    else

Перейти на страницу:

Похожие книги

1001 совет по обустройству компьютера
1001 совет по обустройству компьютера

В книге собраны и обобщены советы по решению различных проблем, которые рано или поздно возникают при эксплуатации как экономичных нетбуков, так и современных настольных моделей. Все приведенные рецепты опробованы на практике и разбиты по темам: аппаратные средства персональных компьютеров, компьютерные сети и подключение к Интернету, установка, настройка и ремонт ОС Windows, работа в Интернете, защита от вирусов. Рассмотрены не только готовые решения внезапно возникающих проблем, но и ответы на многие вопросы, которые возникают еще до покупки компьютера. Приведен необходимый минимум технических сведений, позволяющий принять осознанное решение.Компакт-диск прилагается только к печатному изданию книги.

Юрий Всеволодович Ревич

Программирование, программы, базы данных / Интернет / Компьютерное «железо» / ОС и Сети / Программное обеспечение / Книги по IT
Разработка приложений в среде Linux. Второе издание
Разработка приложений в среде Linux. Второе издание

Книга известных профессионалов в области разработки коммерческих приложений в Linux представляет СЃРѕР±РѕР№ отличный справочник для широкого круга программистов в Linux, а также тех разработчиков на языке С, которые перешли в среду Linux из РґСЂСѓРіРёС… операционных систем. РџРѕРґСЂРѕР±но рассматриваются концепции, лежащие в основе процесса создания системных приложений, а также разнообразные доступные инструменты и библиотеки. Среди рассматриваемых в книге вопросов можно выделить анализ особенностей применения лицензий GNU, использование СЃРІРѕР±одно распространяемых компиляторов и библиотек, системное программирование для Linux, а также написание и отладка собственных переносимых библиотек. Р

Майкл К. Джонсон , Эрик В. Троан

Программирование, программы, базы данных