【发布时间】:2020-05-01 21:34:40
【问题描述】:
我有一堆 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;
}
【问题讨论】:
-
你可以做 ` val = Convert.ToInt32(valStack.Pop());` 。但是,有一个问题,为什么您将参数作为 ref 传递?
-
您正在返回
int值,但在您的函数中您提到了对象值。无法将int传递给object -
另外两个想法:这里不需要
Stack被引用(除非这是您的自定义struct);和 - 如果堆栈为空,IMO 你应该 throw - 这是一个下溢 -
没有回答你的问题,但你正在分配 val = 0;然后定义 int val = valStack.Pop(),这样还能编译吗?
标签: c#