Присвоить значение одного стека другому - C#
Формулировка задачи:
Есть 2 стека. Один основной, другой как буфер. Надо в одном стеке сохранять значение другого на время. Но после работы с первым стеком, второй почему-то тоже обнуляется. Что за ерунда?
Предположим, вот так
Stack<int> a = new Stack<int>();
Stack<int> temp = new Stack<int>();
temp = a; //Присвоили значение temp
a.Push(3);
a.Push(5);
a.Push(1);
a.Pop();// После первого же Pop значение temp тоже обнуляется
a.Pop();
a.Pop();Решение задачи: «Присвоить значение одного стека другому»
textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace GenericDelegate
{
public class MyStack<T>:IEnumerable<T>
{
private Stack<T> tempStack;
private Stack<T> usedStack;
public MyStack()
{
tempStack = new Stack<T>();
usedStack = new Stack<T>();
}
public void AddInTemp(T arg)
{
tempStack.Push(arg);
}
public void AddInUsed(T arg)
{
usedStack.Push(arg);
}
public void AddInBoth(T arg)
{
tempStack.Push(arg);
usedStack.Push(arg);
}
public T GetFromUsed()
{
return usedStack.Pop();
}
public T[] GetFromBoth()
{
return new T[] { tempStack.Pop(), usedStack.Pop() };
}
public IEnumerator<T> GetEnumerator()
{
return usedStack.GetEnumerator();
}
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
{
return usedStack.GetEnumerator();
}
}
}