字段不是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;
            }
        }
}

解决方案 »

  1.   

    没办法实现,除非用自定义类或接口而不是IList<int>
      

  2.   

    哦?可能我对于需求的理解有错,需求的原文是这样描述属性中的get的。
    The getter returns a read-only IList wrapper for the current collection.
      

  3.   


    那这个只读的集合如何实现?
           如下的做法应该不行吧?
                get
                {
                    IList<int> ret = new List<int> ();
                    foreach (int n in list)
                    {
                        ret.Add(n);
                    }
                    return ret;
                }
      

  4.   

    blue_sky007(蓝蓝的天) 
    你上面的方法可以,但每次读取都会在内存中添加一个实例,这样数据项多的时候会浪费内存和产生效率问题
      

  5.   

    to zrh97870(123):那关于read-only的特性的需求没有实现啊?“The getter returns a read-only IList wrapper for the current collection.”
                           ~~~~~ 
    我主要的疑惑也在这里
      

  6.   

    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!");
            }
        }