Основы C# Урок 65. Класс Stack
Класс Stack предназначен для хранения некоторых данных произвольного типа. Он находится в пространстве имен System.Collections.
Основной принцип действия этого класса - "первый вошел, последний вышел".
Вот пример использования этого класса:
// Создаем класс для добавления его экземпляров в стек.
class DataClass
{
public int a;
public int b;
public DataClass(int a, int b)
{
this.a = a;
this.b = b;
}
public override string ToString()
{
return "a = " + a + ", b = " + b;
}
}
Теперь займемся непосредственно стеком.
// Добавляем данные в стек.
Stack st = new Stack();
DataClass q = new DataClass(2, 3);
st.Push(q);
q = new DataClass(10, 100);
st.Push(q);
// Смотрим последние добавленные данные (без удаления их из стека).
DataClass t = (DataClass)st.Peek();
Console.WriteLine(t);
Console.WriteLine("Count: " + st.Count);
Console.WriteLine();
// Извлекаем последние добавленные данные (с удалением их из стека).
t = (DataClass)st.Pop();
Console.WriteLine(t);
Console.WriteLine("Count: " + st.Count);
Console.WriteLine();
t = (DataClass)st.Pop();
Console.WriteLine(t);
Console.WriteLine("Count: " + st.Count);
Console.WriteLine();
Пример достаточно ясен из комментариев.
Класс Stack позволет обойти все свои элементы. Это можно сделать, например, вот так:
foreach (DataClass d in st)
{
Console.WriteLine(d.ToString());
}
Обратите внимание, на то, что тип данных в стеке не определен (вернее, в стеке хранятся данные типа Object). Поэтому мы везде вынуждены делать приведение типов.
Из других полезных методов и свойств следует отметить еще Clear (очищает весь стек), Contains (позволяет определить, содержит ли наш стек какой-нибудь элемент), ToArray (возвращает массив, состоящий из элементов стека).
|