Stack<T>
是一个类,因此它是一个引用类型。可以在没有 ref 标志的函数中传递堆栈,并通过 Push
、Pop
等更改它,但是当我尝试做这样的事情时:
static void copyingStructs(Stack<MyStruct> stackSource, Stack<MyStruct> stackCopy)
{
stackCopy = stackSource;
}
它不起作用,在主函数中复制的堆栈保持不变。我认为这是因为值类型结构,但问题仍然在于类堆栈。 当然我可以使用 ref 标志,但我有一个习惯,如果我不知道某件事的详细工作原理,我就无法继续学习
如果您想从方法内修改原始 stackCopy,您应该使用 ref 关键字,如下所示:
static void copyingStructs(ref Stack<MyStruct> stackSource, ref Stack<MyStruct> stackCopy)
{
stackCopy = stackSource;
}