Roslyn 的代码生成 API 是不可变的吗?



我开始使用Roslyn进行一些代码生成实验。我注意到,当我对语法对象调用.Add...时,我调用的原始对象并没有发生变化。罗斯林就是这样设计的吗?有没有办法使它可变?

是的,语法树是不可变的。Roslyn团队的一些原创设计讨论是关于不变性的:

‪‬https://github.com/KirillOsenkov/Bliki/wiki/Roslyn-Immutable-Trees

几点是并发性和线程安全,并且能够消除重复,而无需实现写时复制之类的功能。

我不知道如何使它们可变。

最新更新