gpt4 book ai didi

c# - 清除推送列表时清除通用列表堆栈

转载 作者:太空狗 更新时间:2023-10-29 21:43:24 25 4
gpt4 key购买 nike

当我想在 C# 中做一些操作时,我遇到了一个小问题。我会给你一个小例子。

Stack<List<HufmannLetter>> steps = new Stack<List<HufmannLetter>>();
List<HufmannLetter> letterList = new List<HufmannLetter>();

while(true){

letterList.Add("asd");
letterList.Add("sad");

steps.Push(letterList);
letterlist.Clear();
}

在这段代码中,我想将我的链表推送到堆栈,而不是删除列表中的所有项目。当我清除列表时,我的堆栈的第一个索引消失了,因为它是通过引用传递的。我错了吗?因为我不知道为什么会这样。

所以我使用传值方式。

Stack<List<HufmannLetter>> steps = new Stack<List<HufmannLetter>>();
List<HufmannLetter> letterList = new List<HufmannLetter>();

while(true) {

letterList.Add("asd");
letterList.Add("sad");

List<HufmannLetter> tempLetterList = new List<HufmannLetter>(letterList);
steps.Push(tempLetterList);
letterlist.Clear();
}

这是解决问题的好方法吗?这样它可以工作,但可读性会降低。你有什么建议?

谢谢...

最佳答案

只需创建一个新的 List<HufmannLetter>循环内的对象并将其添加到堆栈中。重复使用相同的列表对象不会有任何性能优势。

Stack<List<HufmannLetter>> steps = new Stack<List<HufmannLetter>>();

while(true)
{
List<HufmannLetter> letterList = new List<HufmannLetter>();

letterList.Add("asd");
letterList.Add("sad");

steps.push(letterList);
}

关于c# - 清除推送列表时清除通用列表堆栈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40696255/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com