Ber*_*kin 6 c# parameter-passing generic-collections
当我想在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();
}
Run Code Online (Sandbox Code Playgroud)
在此代码中,我想将我的链表推送到堆栈而不是删除列表中的所有项目.当我清除列表时,我的堆栈的第一个索引消失,因为它通过引用传递.我错了吗?因为我不知道为什么会这样.
所以我使用pass by value方法.
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();
}
Run Code Online (Sandbox Code Playgroud)
这是解决问题的好方法吗?这样它工作,但可读性降低.你有什么建议我的?
谢谢...
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);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
115 次 |
| 最近记录: |