Dav*_*ant 5 c# stack immutability
我已经看到这篇帖子宣布今天发布了一个稳定版本的Microsoft.Bcl.Immutable NuGet包.
我想知道:不可变堆栈的用途是什么?我找不到一个有用的例子或场景.可能是我对不变性的理解.如果你能说明为什么这个东西可能有用,最好用一个具体的例子,这将是很好的.
小智 7
这个集合库背后的想法是提供集合,当更改时生成相同集合的新版本,其中所有旧版本的集合仍然有效.
它类似于版本控制系统的工作方式:您可以更改代码,并将更改提交到服务器,从而生成新版本的源代码树.在此期间,您仍然可以查看以前的任何修订版本.
对于不可变集合,通过保持指向不会更改的集合的指针,您可以继续访问旧版本(本质上是不可变快照).
你可能会说,这种情况下是一个堆栈用处不大,因为你可能使用堆栈添加和检索每个项目只有一次,也是维护秩序.通常,堆栈的使用与在单个执行线程上运行的代码密切相关.
但现在,我打字,我能想到的一个具体使用情况,如果你有一个懒惰的解析器,需要跟踪堆栈中的一些状态.然后,您可以在初始分析期间保存指向不可变堆栈的指针,而不进行复制,并在解析延迟工作时检索它.