Console.WriteLine("Поместить символы А-J в стек stkl."); for(i=0; !stkl.IsFull; i++)
stkl.Push((char) ('A' + i));
// Создать копию стека stckl.
Stack stk2 = new Stack(stkl);
// Вывести содержимое стека stkl.
Console.Write("Содержимое стека stkl: "); while ( !stkl.IsEmpty ) {
ch = stkl.Pop ;
Console.Write(ch);
}
Console.WriteLine ;
Console.Write("Содержимое стека stk2: "); while ( !stk2.IsEmpty ) {
ch = stk2.Pop ;
Console.Write(ch);
}
Console.WriteLine ("\n");
}
}
Результат выполнения этой программы приведен ниже.
Поместить символы А-J в стек stkl.
Содержимое стека stkl: JIHGFEDCBA Содержимое стека stk2: JIHGFEDCBA
В классеStackDemoсначала конструируется первый стек(stkl),заполняемый символами. Затем этот стек используется, для конструирования второго стека(stk2).Это приводит к выполнению следующего конструктора классаStack.
// Сконструировать объект класса Stack из существующего стека, public Stack(Stack ob) {
// Распределить память для стека, stck = new char[ob.stck.Length];
// Скопировать элементы в новый стек, for (int i=0; i < ob.tos; i++) stck[i] = ob.stck[i];
// Установить переменйую tos для нового стека, tos = ob.tos;
}
В этом конструкторе сначала распределяется достаточный объем памяти для массива, чтобы хранить в нем элементы стека, передаваемого в качестве аргументаob.Затем содержимое массива, образующего стекob,копируется в новый массив, после чего соответственно устанавливается переменнаяtos,содержащая индекс вершины стека. По завершении работы конструктора новый и исходный стеки существуют как отдельные, хотя и одинаковые объекты.
Вызов перегружаемого конструктора с помощью ключевого слова this
Когда приходится работать с перегружаемыми конструкторами, то иногда очень полезно предоставить возможность одному конструктору вызывать другой. В C# это дается с помощью ключевого слова this. Ниже приведена общая форма такого вызова.
}
В исходном конструкторе сначала выполняется перегружаемый конструктор, список параметров которого соответствует критерию
// Продемонстрировать вызов конструктора с помощью ключевого слова this.
using System;
class XYCoord { public int x, y;
public XYCoord : this(0, 0) {
Console.WriteLine("В конструкторе XYCoord");
}
public XYCoord(XYCoord obj) : this(obj.x, obj.y) {
Console.WriteLine("В конструкторе XYCoord(obj)");
}