Joa*_*nge 20 .net c# immutability
我在我的应用程序中创建了大多数基本类型,不可变.但收藏品是否也应该是不可变的?对我来说,这似乎是一个巨大的开销,除非我错过了什么.
我在谈论集合以保存Point3值等,可以在不同时间添加它们.因此,如果集合中有1M值,并且您需要删除其中的1个,则必须重新创建相同的集合,对吧?
Joe*_*orn 28
Eric Lippert在C#中有一系列关于Immutability的系列,如果你一直阅读它,他会实现几个不同的不可变集合:
我最喜欢的收藏技巧就是永远不会传递它们.如果它们只存在于单个对象中,那么使它们成为不可变的几乎是无关紧要的(只要你的包含对象不改变它们就不会改变它们).
通常你的收藏代表什么?这是一系列狗或发票集合......
通常你可以用一组狗(Herd?neuter?)或一组发票(付费?)来做一些事情.几乎总有一些操作适用于整个对象列表 - 具有超出单数的功能的操作invoice.pay()(例如,确保首先支付最重要的发票),没有围绕您的集合的类,实际上没有地方放置这些操作.
有一些变量与你的集合相关联通常也是有意义的 - 再次没有包装器,你总是把这些变量放在一些奇怪的不自然的位置.
一开始可能看起来很奇怪,但在你判断之前尝试几次.