我有一个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;
}
如果使用的是非通用版本的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;
}