读书人

关于readonly的小疑点

发布时间: 2012-01-31 21:28:41 作者: rapoo

关于readonly的小问题
字段不是readonly的,
但是需要属性中要readonly.

例如:
public class D
{
private IList <int> list;
public IList <int> List
{
//问题1:如果要get得到的list不允许调用Add,Remove等方法,如何实现?
get
{
//return list;
}
//问题2:如果只需要浅拷贝,就这样实现可以吗?
set
{
list = value;
}
}
}

[解决办法]
没办法实现,除非用自定义类或接口而不是IList <int>
[解决办法]
复制一个只读的集合吗?每次都复制一遍,太费资源了吧
[解决办法]
复制一个只读的集合.. 太浪费了
[解决办法]
blue_sky007(蓝蓝的天)
你上面的方法可以,但每次读取都会在内存中添加一个实例,这样数据项多的时候会浪费内存和产生效率问题
[解决办法]
to zrh97870(123):

那关于read-only的特性的需求没有实现啊?

“The getter returns a read-only IList wrapper for the current collection.”
~~~~~
我主要的疑惑也在这里
///////////////////////////////////////////////////////////////////////////

自定义一个类,从List <int> 继承,把所有能改变list的方法和属性都覆盖重写。

如:
public class MyIntList : List <int>
{
public new int this[int index]
{
get
{
return base[index];
}
}

public new void Add(int item)
{
throw new Exception( "Can not use this method! ");
}
}


读书人网 >C#

热点推荐