c# - 如何设置一个等于栈顶的变量?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;
}
解决方案
如果您使用的是非通用版本的 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;
}
推荐阅读
- sqlite - 为什么 SUM(mycolumn) 显示小数点?
- python-3.x - 我如何用 Python 发送嗅探数据包?
- node.js - 如何在同一个 GET 请求中呈现文件并将数据发送到页面
- c++ - 为什么我的代码在要求打印长度和宽度的值后不会接受多个输入?
- python - 单括号 df["column"] 和双括号 df[["column"]] 有什么区别
- azure - 应用服务交换槽期间出现多个 Redis 连接异常(No Connection available to service)
- groovy - Groovy 列表包含 [x..y] 上的方法
- google-compute-engine - 将 http 重定向到 https 谷歌云负载均衡
- impala - 在 Impala 中选择 stack() UDTF
- java - 刷新后看不到更新记录