return stck.Length;

  }

  // Возвратить количество объектов, находящихся в данный момент в стеке,

  public int GetNum() {

    return tos;

  }

}

class StackDemo {

  static void Main() {

    Stack stk1 = new Stack(10);

    Stack stk2 = new Stack(10);

    Stack stk3 = new Stack(10);

    char ch;

    int i;

    // Поместить ряд символов в стек stk1.

    Console.WriteLine("Поместить символы А-J в стек stk1.");

    for(i=0; !stk1.IsFull(); i++)

      stk1.Push((char)('A' + i));

    if(stk1.IsFull())

      Console.WriteLine("Стек stk1 заполнен.");

    // Вывести содержимое стека stk1.

    Console.Write("Содержимое стека stk1: ");

    while( !stk1.IsEmpty()) {

      ch = stk1.Pop();

      Console.Write(ch);

    }

    Console.WriteLine();

    if(stk1.IsEmpty())

      Console.WriteLine("Стек stk1 пуст.");

    // Поместить дополнительные символы в стек stk1.

    Console.WriteLine("Вновь поместить символы А-J в стек stk1.");

    for(i=0; !stk1.IsFull(); i++)

      stk1.Push((char)('A' + i));

    // А теперь извлечь элементы из стека stk1 и поместить их в стек stk2.

    // В итоге элементы сохраняются в стеке stk2 в обратном порядке.

    Console.WriteLine("А теперь извлечь символы из стека stk1\n" +

          "и поместить их в стек stk2.");

    while( !stk1.IsEmpty()) {

      ch = stk1.Pop();

      stk2.Push(ch);

    }

    Console.Write("Содержимое стека stk2: ");

    while( !stk2.IsEmpty() ) {

      ch = stk2.Pop();

      Console.Write(ch);

    }

    Console.WriteLine("\n");

    // Поместить 5 символов в стек.

    Console.WriteLine("Поместить 5 символов в стек stk3.");

    for(i=0; i < 5; i++)

      stk3.Push((char) ('A' + i)) ;

    Console.WriteLine("Емкость стека stk3: " + stk3.Capacity());

    Console.WriteLine("Количество объектов в стеке stk3: " 

          + stk3.GetNum());

  }

}

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

Поместить символы А-J в стек stk1.

Стек stk1 заполнен.

Содержимое стека stk1: JIHGFEDCBA

Стек stk1 пуст.

Вновь поместить символы А-J в стек stk1.

А теперь извлечь символы из стека stk1

и поместить их в стек stk2.

Содержимое стека stk2: ABCDEFGHIJ

Поместить 5 символов в стек stk3.

Емкость стека stk3: 10

Количество объектов в стеке stk3: 5

<p>Передача объектов методам по ссылке</p>

В приведенных до сих пор примерах программ при указании параметров, передаваемых методам, использовались типы значений, например int или double. Но в методах можно также использовать параметры ссылочного типа, что не только правильно, но и весьма распространено в ООП. Подобным образом объекты могут передаваться методам по ссылке. В качестве примера рассмотрим следующую программу.

// Пример передачи объектов методам по ссылке.

using System;

class MyClass {

  int alpha, beta;

  public MyClass(int i, int j) {

    alpha = i;

    beta = j;

}

  // Возвратить значение true, если параметр ob

  // имеет те же значения, что и вызывающий объект,

  public bool SameAs(MyClass ob) {

    if ((ob.alpha == alpha) & (ob.beta == beta))

      return true;

    else

      return false;

  }

  // Сделать копию объекта ob.

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

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