[英]Values don't leave the stack after Pop (Stack<T>)
堆栈由分组的列表形成。 然后有几个调用Pop
的 foreachs。 但是堆栈中的值的数量并没有减少。 请解释原因。 先感谢您!
public static void N(){
var test = new List<int>(){1,1,1,2,2,3,3,3,3,4,4,5,6,7,7,7,7,8};
var testGr = test.GroupBy(x=>x);
var stacked = testGr.Select(x=> new {
num = x.Key,
stack = new Stack<int>(x)
});
var testNumOne = stacked.First(x=>x.num==1);
Console.WriteLine(testNumOne.stack.Count());
foreach(var x in new List<int>(){1,2,1,2,3}){
var flush = stacked.First(y => y.num == x).stack.Pop();
}
testNumOne = stacked.First(x=>x.num==1);
Console.WriteLine(testNumOne.stack.Count());
}
“stacked”的副本解决了问题(通过stacked.ToList())
public static void Main()
{
var test = new List<int>(){1,1,1,2,2,3,3,3,3,4,4,5,6,7,7,7,7,8};
var testGr = test.GroupBy(x=>x);
var stacked = testGr.Select(x=> new {
num = x.Key,
stack = new Stack<int>(x)
});
var stackedCopy = stacked.ToList();
var testNumOne = stackedCopy.First(x=>x.num==1);
Console.WriteLine(testNumOne.stack.Count());
foreach(var x in new List<int>(){1,2,1,2,3}){
var flush = stackedCopy.First(y => y.num == x).stack.Pop();
}
testNumOne = stackedCopy.First(x=>x.num==1);
Console.WriteLine(testNumOne.stack.Count());
}
我已经在学习 Linq 库如何与 memory 一起使用。 非常感谢大家!)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.