如何使用函数弹出堆栈中的所有元素

时间:2019-05-06 13:36:51

标签: c# stack

嗨,我想按功能清空整个堆栈,而不是一个一个地清空,我想在函数中使用循环,该循环删除/弹出所有您可以看到我的代码的堆栈元素

using System;
using System.Collections;
public class SamplesStack
{

    public static void Main()
    {

        // Creates and initializes a new Stack.
        Stack myStack = new Stack();
        myStack.Push("Hello");
        myStack.Push("World");
        myStack.Push("!");


        // Displays the properties and values of the Stack.
       // Console.WriteLine("myStack");
        Console.WriteLine("\tCount:    {0}", myStack.Count);
        Console.Write("\tValues:");
        PrintValues(myStack);
       object pt = myStack.Pop();
        Console.WriteLine("\tCount:    {0}", myStack.Count);
        Console.ReadLine();
    }

    public static void PrintValues(IEnumerable myCollection)
    {
        foreach (Object obj in myCollection)
            Console.Write("    {0}", obj);
        Console.WriteLine();
    }
    public static void emptyStack(Stack empty)
    {
     what to do here

    }

2 个答案:

答案 0 :(得分:0)

您有几种选择。这是一对:

  1. 简单选项是注释中提到的一行代码:myStack.Clear();Microsoft Doc)。
  2. 遍历堆栈并弹出直到其为空:
while(myStack.Count > 0) 
{ 
   myStack.Pop();
}

答案 1 :(得分:0)

这是我的问题的答案,我尝试了不同的事情,所以我通过此功能做到了

public static void PopStack(Stack stObj)
    {
        foreach (var st in stObj.ToArray())
        {
            var obj= stObj.Pop();
            Console.WriteLine(count);
            Console.WriteLine(obj);

        }

        Console.WriteLine("\tCount:    {0}", stObj.Count);

    }