我如何设置一个等于堆栈顶部的变量? C#

问题描述 投票:0回答:1

我有一个int堆栈,我试图将一个新的int设置为等于堆栈顶部的值。我尝试将新的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#
1个回答
2
投票

如果使用的是非通用版本的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;
}
© www.soinside.com 2019 - 2024. All rights reserved.