如果我在方法中执行堆栈,为什么不能从另一个堆栈复制?

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

Stack<T>
是一个类,因此它是一个引用类型。可以在没有 ref 标志的函数中传递堆栈,并通过
Push
Pop
等更改它,但是当我尝试做这样的事情时:

static void copyingStructs(Stack<MyStruct> stackSource, Stack<MyStruct> stackCopy)
{
    stackCopy = stackSource;
}

它不起作用,在主函数中复制的堆栈保持不变。我认为这是因为值类型结构,但问题仍然在于类堆栈。 当然我可以使用 ref 标志,但我有一个习惯,如果我不知道某件事的详细工作原理,我就无法继续学习

c# oop reference stack
1个回答
0
投票

如果您想从方法内修改原始 stackCopy,您应该使用 ref 关键字,如下所示:

static void copyingStructs(ref Stack<MyStruct> stackSource, ref Stack<MyStruct> stackCopy)
{
    stackCopy = stackSource;
}
© www.soinside.com 2019 - 2024. All rights reserved.