sup*_*cat 1 .net vb.net mutable
在我的一些项目中,我发现自己宣布了一个相当无聊的课程:
Class Holder(Of T) Public It As T Sub New(ByVal It As T) Me.It = It End Sub End Class
例如,允许对象以这样的方式向另一个对象提供信息,使得信息可以随后在任何地方发生变化.例如,在一个词典(串,持有人(中SomeImmutableType)),所以可以更新SomeImmutableType的事情,而不必改变词典本身(因为字典对一个给定的关键条目总是包含相同的Holder对象,即持有人对象可以用作锁).
是否有更适合此目的的内置类?我更喜欢.net 2.0兼容性,但即使在4.0中,Tuple类型也是不可变的.如果没有这样建于一件事,就是它需要一个持有人类型来定义它本身作为一个嵌套的类型,或者要求有一个项目中持有人一个定义每种类型的更好吗?
我所知道的唯一内置的东西是Array.使用一个元素的数组是可行的,但它感觉真的很吵,因为通常当代码有一个数组时,期望它可以使用某个大小而不是一个.
PS -用例:
我不知道任何类型做你想要的.
关于你的三个使用案例:
当然,但请记住,您现在正在交易增加的收集压力,增加的虚拟内存使用量以及大量额外的时间来跟踪生存对象集,以减少整数存储数量到字典存储桶中.这是一个很好的权衡吗?对我来说听起来不是很好.如果这是一场大胜,我会感到惊讶.
听起来像一个复杂的解决方案.还有其他解决方案.例如,您可以在字典顶部编写一个访问层,根据需要转换值,而不会改变字典.
关键是"编译器可以制作两种闭包类型".您所描述的问题是由于我们没有有效地对闭包类型进行分区.闭包类本质上是你的"持有者"类型,只是持有任意多个数据,而不仅仅是一个.(我们正在考虑使用更好的解决方案来分区C#和VB中的闭包类型,但没有承诺.)
所有这一切,我以前使用过你的技巧,主要是因为我从C++移植现有代码,大量使用传递对变量的引用.我通常使用这种技巧来启动和运行移植的代码,然后将其重构为更具有某种意义的C#-ish稍后.
归档时间: |
|
查看次数: |
261 次 |
最近记录: |