Почему мой метод ToString модифицирует оригинальный стек, несмотря на то, что делает его копию? - PullRequest
0 голосов
/ 23 марта 2020

Итак, для проекта мне нужно создать этот стек, затем распечатать все его элементы с помощью метода to string, однако, когда я передал свой объект стека в ToString, хотя я скопировал его в новый объект tempstack и вытолкнул Исходя из этих элементов, мой исходный стек был пуст, потому что ни одна из строк tem1, temp2, temp3 не была напечатана, то есть исходный стек был пуст. Зачем выталкивать временную стопку из элементов оригинальной стопки?

'''
 namespace StacksandquesLab10
{​
    class Driver​
    {​
        ​
        public static string ToString(Stack<string> stack)​
        {​
            Stack<string> tempstack = stack;​
​
​
            string output = "";​
            while (tempstack.first != null)​
            {​
                string value = tempstack.Pop();​
                output += " \"" + value + "\", ";​
            }​
            return output;​
        }​
        public static void Main(String [] args)​
        {​
            Stack<string> stack = new Stack<string>();​
​
            stack.Push("Hello!");​
            stack.Push("Butt");​
            stack.Push("Lol");​
​
​
            Console.WriteLine(ToString(stack));​
​
​
​
​
​
​
​
            string temp = stack.Pop();​
            Console.WriteLine(temp);​
​
            string temp2 = stack.Pop();​
            Console.WriteLine(temp2);​
​
            string temp3 = stack.Pop();​
            Console.WriteLine(temp3);​
​
            stack.Push(temp2);​
            stack.Push(temp2);​
            stack.Push(temp);​
        }​
    }
'''
...