是的,语法树是不可变的。Roslyn团队的一些原创设计讨论是关于不变性的:
我开始使用Roslyn进行一些代码生成实验。我注意到,当我对语法对象调用.Add...
时,我调用的原始对象并没有发生变化。罗斯林就是这样设计的吗?有没有办法使它可变?
https://github.com/KirillOsenkov/Bliki/wiki/Roslyn-Immutable-Trees
几点是并发性和线程安全,并且能够消除重复,而无需实现写时复制之类的功能。
我不知道如何使它们可变。