相关疑难解决方法(0)

C#中的只读列表

我有一些带List-property的类:

class Foo {
  private List<int> myList;
}
Run Code Online (Sandbox Code Playgroud)

我想提供对此字段的访问权限仅供读取.

即我希望属性可以访问Enumerable,Count等,并且无法访问Clear,Add,Remove等.我怎么能这样做?

.net c# list

18
推荐指数
4
解决办法
2万
查看次数

高效实现不可变(双)LinkedList

读过这个问题是不可变的还是不可变的?并阅读我之前关于不变性的问题的答案,我仍然有点困惑有效实现简单的LinkedList是不可变的.在数组方面似乎很容易 - 复制数组并返回基于该副本的新结构.

据说我们有一个通用的Node类:

class Node{
    private Object value;
    private Node next;
}
Run Code Online (Sandbox Code Playgroud)

并基于上面的类LinkedList允许用户添加,删除等.现在,我们如何确保不变性?我们在插入元素时是否应该递归地复制对列表的所有引用?

我也对Immutable或不可变的答案感到好奇吗?提到了在二叉树的帮助下导致log(n)时间和空间的cerain优化.另外,我在某处读到,在前面添加一个元素也是0(1).这让我很困惑,好像我们没有提供参考文献的副本,然后实际上我们正在修改两个不同来源的相同数据结构,这打破了不变性......

您的任何答案是否都适用于双向链接列表?我期待着对任何其他问题/解决方案的任何回复/指示.在此先感谢您的帮助.

linked-list immutability data-structures

9
推荐指数
1
解决办法
8127
查看次数

你期望不可变列表的不变性有多深?

如果你有一个不可变列表,你希望它总是在你要求的时候返回对同一个对象的引用

list.get(0)
Run Code Online (Sandbox Code Playgroud)

我的问题是,您是否希望能够改变对象并在下次从列表中获取突变时反映出变异?

c# java collections immutability

6
推荐指数
1
解决办法
713
查看次数