Страница 90 из 502
<b> ch = stk2.Pop();</b>
<b> Console.Write(ch);</b>
<b> }</b>
<b> Console.WriteLine("n");</b>
<b> // Поместить 5 символов в стек.</b>
<b> Console.WriteLine("Поместить 5 символов в стек stk3."); </b>
<b> for(i=0; i < 5; i++)</b>
<b> stk3.Push((char) ('A' + i)) ;</b>
<b> Console.WriteLine("Емкость стека stk3: " + stk3.Capacity()); </b>
<b> Console.WriteLine("Количество объектов в стеке stk3: " </b>
<b> + stk3.GetNum());</b>
<b> }</b>
<b>}</b>
При выполнении этой программы получается следующий результат.
<b>Поместить символы А-J в стек stk1.</b>
<b>Стек stk1 заполнен.</b>
<b>Содержимое стека stk1: JIHGFEDCBA </b>
<b>Стек stk1 пуст.</b>
<b>Вновь поместить символы А-J в стек stk1.</b>
<b>А теперь извлечь символы из стека stk1 </b>
<b>и поместить их в стек stk2.</b>
<b>Содержимое стека stk2: ABCDEFGHIJ</b>
<b>Поместить 5 символов в стек stk3.</b>
<b>Емкость стека stk3: 10 </b>
<b>Количество объектов в стеке stk3: 5</b>
Передача объектов методам по ссылке
В приведенных до сих пор примерах программ при указании параметров, передаваемых методам, использовались типы значений, например int или double. Но в методах можно также использовать параметры ссылочного типа, что не только правильно, но и весьма распространено в ООП. Подобным образом объекты могут передаваться методам по ссылке. В качестве примера рассмотрим следующую программу.
<b>// Пример передачи объектов методам по ссылке.</b>
<b>using System;</b>
<b>class MyClass { </b>
<b> int alpha, beta;</b>
<b> public MyClass(int i, int j) { </b>
<b> alpha = i; </b>
<b> beta = j;</b>
<b>}</b>
<b> // Возвратить значение true, если параметр ob </b>
<b> // имеет те же значения, что и вызывающий объект, </b>
<b> public bool SameAs(MyClass ob) {</b>
<b> if ((ob.alpha == alpha) & (ob.beta == beta)) </b>
<b> return true; </b>
<b> else </b>
<b> return false;</b>
<b> }</b>
<b> // Сделать копию объекта ob. </b>
<b> public void Copy(MyClass ob) { </b>
<b> alpha = ob.alpha; </b>
<b> beta = ob.beta;</b>
<b> }</b>
<b> public void Show() {</b>
<b> Console.WriteLine("alpha: {0}, beta: {1}", alpha, beta);</b>
<b> }</b>
<b>}</b>
<b>class PassOb {</b>
<b> static void Main() {</b>
<b> MyClass ob1 = new MyClass(4, 5);</b>
<b> MyClass ob2 = new MyClass(6, 7);</b>
<b> Console.Write("ob1: "); </b>
<b> ob1.Show();</b>
<b> Console.Write("ob2: "); </b>
<b> ob2.Show();</b>
<b> if(ob1.SameAs(ob2))</b>
<b> Console.WriteLine("ob1 и ob2 имеют одинаковые значения."); </b>
<b> else</b>
<b> Console.WriteLine("ob1 и ob2 имеют разные значения."); </b>
<b> Console.WriteLine() ;</b>
<b> // А теперь сделать объект ob1 копией объекта ob2. </b>
<b> ob1.Copy(ob2);</b>
<b> Console.Write("ob1 после копирования: "); </b>
<b> ob1.Show();</b>
<b> if(ob1.SameAs(ob2) )</b>
<b> Console.WriteLine("ob1 и ob2 имеют одинаковые значения."); </b>
<b> else</b>