字段不是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;
}
}
}
但是需要属性中要readonly.例如:
public class D
{
private IList<int> list;
public IList<int> List
{
//问题1:如果要get得到的list不允许调用Add,Remove等方法,如何实现?
get
{
//return list;
}
//问题2:如果只需要浅拷贝,就这样实现可以吗?
set
{
list = value;
}
}
}
The getter returns a read-only IList wrapper for the current collection.
那这个只读的集合如何实现?
如下的做法应该不行吧?
get
{
IList<int> ret = new List<int> ();
foreach (int n in list)
{
ret.Add(n);
}
return ret;
}
你上面的方法可以,但每次读取都会在内存中添加一个实例,这样数据项多的时候会浪费内存和产生效率问题
~~~~~
我主要的疑惑也在这里
~~~~~
我主要的疑惑也在这里
///////////////////////////////////////////////////////////////////////////自定义一个类,从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!");
}
}