首页 > 解决方案 > 如何设置一个等于栈顶的变量?C#

问题描述

我有一堆整数,我试图设置一个新的整数等于堆栈顶部的值。我尝试将新 int 设置为等于 Stack.Pop() 和 Stack.Peek(),但不断收到错误消息,指出无法将对象设置为 int。

public static int IntFound(ref Stack valStack)
{
   val = 0;
   if (valStack.Count > 0)
     int val = valStack.Pop();
   return val;
}

标签: c#

解决方案


如果您使用的是非通用版本的 Stack,那么您可以执行以下操作。

public static int IntFound(Stack valStack)
{
    var val = 0;
    if (valStack.Count > 0)
        val = Convert.ToInt32(valStack.Peek());
    return val;
}

请注意,ref如果您不打算更改调用者的变量,则不需要传递堆栈。Stack 的非泛型版本将值存储为对象。因此,您需要使用Convert.ToInt32()将对象转换为 int。

或者,您也可以使用 Stack ( Stack<int>)的通用版本

public static int IntFound(Stack<int> valStack)
{
    var val = 0;
    if (valStack.Count > 0)
       val = valStack.Peek();
    return val;
}

推荐阅读