Stack对象如何与Value项一起使用

Vac*_*ano 0 c# stack .net-3.5

说我在课堂上有这个

private static Stack<int> _cursorRefCounts = new Stack<int>();
Run Code Online (Sandbox Code Playgroud)

当我打电话给_cursorRefCounts.Peek()什么回来?它是参考还是价值?

如果我增加返回的值然后再次调用Peek,那么会更大吗?

我似乎记得发生的事情是,当它被放入Stack对象时,int被装箱.然后当它出来时它被取消装箱.拆箱是否会再次成为价值物品?

如果我想增加堆栈中的顶级项目,我该怎么做?(注意:这是一个多线程的应用程序.我想只是递增顶部值而不会将其弹出.(虽然我想我可以锁定该部分.))

Ada*_*ear 10

Peek 将返回一个值,因此递增它不会修改堆栈上的值.

要增加顶部项目,请将其弹出,增加并重新按下.

  • 在多线程环境中,您应该使用锁来使增量操作成为原子. (4认同)
  • @vacca:`++`运算符是__not thread-safe__.根据经验,语言或库中没有任何内容是线程安全的,除非明确记录为安全. (2认同)