封装对集合成员的添加和删除操作有很多好处,所以成了一个惯用法。包括提供一个只读的getter和AddXX()、 RemoveXX()函数:

public class Person
{
    private IList<Car> _cars = new List<Car>();
    
    public IList<Car> Cars
    {
        get { return new ReadOnlyCollection<Car>(_cars); }
    }

public void AddCar(Car car)
    {
        _cars.Add(car);
    }
}

public class Car
{
    private Person _owner;
    private string _name;

public string Name
    {
        get { return _name; }
        set { _name = value; }
    }
}

如果函数里已经有了一个List<Car>变量,就可以使用 AsReadOnly() 函数:

public IList<Car> Cars
{
    get
    {
        List<Car> cars = new List<Car>(_cars);
        // do some some things
        return cars.AsReadOnly();
    }
}

转载于:https://www.cnblogs.com/1-2-3/articles/1401638.html

只读的泛型集合(IList(Of T))相关推荐

  1. C#中的集合、哈希表、泛型集合、字典

    集合ArrayList 集合:集合可以看做是数组,可以将其看成"长度可变,具有很多方法的数组".使用ArrayList,首先需要导入命名空间using.system.collect ...

  2. C#读取数据库返回泛型集合 把DataSet类型转换为ListT泛型集合

    /// <summary>/// 获取UserInfo泛型集合/// </summary>/// <param name="connStr">数 ...

  3. List泛型集合总结(一)

    为什么要用泛型集合? 在C# 2.0之前,主要可以通过两种方式实现集合: a.使用ArrayList 直接将对象放入ArrayList,操作直观,但由于集合中的项是Object类型,因此每次使用都必须 ...

  4. [工具类]DataTable与泛型集合List互转

    写在前面 工作中经常遇到datatable与list,对于datatable而言操作起来不太方便.所以有的时候还是非常希望通过泛型集合来进行操作的.所以这里就封装了一个扩展类.也方便使用. 类 方法中 ...

  5. C#读取数据库返回泛型集合(DataSetToList)

    一般我们用使用ADO.NET查询数据库返回泛型集合使用SqlDataReader逐行读取数据存入对象 代码 /// <summary> /// 获取UserInfo泛型集合 /// &l ...

  6. 【机房收费个人版】DataTable 与泛型集合的较量

    将近三周的时间,我学到了很多知识,让我受益匪浅!也通过这三周的积累和整理,现在是时候写博客分享我的所知所得了..下面主要写DataTable.泛型集合以及它们之间的比较.. DataTable     ...

  7. 对比两个同类型的泛型集合并返回差异泛型集合 ——两个List类名的比较

    1: /// <summary> 2: /// 对比两个同类型的泛型集合并返回差异泛型集合 3: /// </summary> 4: /// <typeparam nam ...

  8. c#3.0加入的一些新特性——泛型集合

    c#3.0加入的一些新特性 1.泛型集合 2.隐式类型 3.自动实现属性 3.匿名方法 4.扩展方法 5.Lambda表达式 1.泛型集合 在.NET2.0中没有泛型集合定义集合用ArrayList定 ...

  9. C#泛型集合之Dictionaryk, v使用技巧

    1.要使用Dictionary集合,需要导入C#泛型命名空间 System.Collections.Generic(程序集:mscorlib) 2.描述 1).从一组键(Key)到一组值(Value) ...

  10. java 泛型集合 json_将泛型集合转换成分页json数据

    [java]代码库package com.sunweb.util.jsonfactory; import java.util.List; import com.sunweb.util.jsonfact ...

最新文章

  1. C++中为何析构函数总是虚函数?
  2. 学习JavaScript你必须掌握的8大知识点
  3. https证书互信解决方案—创建私有CA并申请证书
  4. 在嵌套使用if语句时,C语言规定else总是什么?
  5. Linux读取SSD的smart信息,使用smartmontools查看SSD的“秘密”信息
  6. angular js创建表单_如何优雅的使用 Angular 表单验证
  7. Dockerfile文件详解
  8. 小米集团:回购460万股,耗资9818万港元
  9. php redis support,ThinkPHP5报错php not support: redis以及Redis的使用
  10. Crowd HDU - 4456 曼哈顿距离转切比雪夫距离的坐标变换与二维坐标离散化
  11. 远程工作两个月的体会(转)
  12. Hadoop完全分布式配置
  13. JavaScript实现的手风琴图片切换,鼠标悬停任意图片html前端源码
  14. css 画一条竖线 或横线
  15. 三菱FX5U系列PLC内置模拟量使用方法和输入输出信号接线
  16. 效率脚本:删除已经合并的git分支
  17. Python图形界面开发(一)——pyside入门
  18. Android Studio 模拟器打开dev setting 修改IP,重新Reload
  19. Altera FPGA程序固化(软件+硬件)
  20. DSP280049代码迁移DSP280039注意事项

热门文章

  1. rutime 理解
  2. python——socket网络编程
  3. 三级联动第二种方法 三级联动.html
  4. SCRUM 12.23
  5. 关于在EF中通用方法
  6. Android --自定义简单Toast
  7. QQ 静态截图程序模拟实现
  8. Thread.SetData与ThreadStatic
  9. 解决permission denied错误
  10. vue-cli中的babel配置文件.babelrc详解