代码之家  ›  专栏  ›  技术社区  ›  zumalifeguard Arctic

在C中,方法是否可以返回列表,以便客户端只能读取它,而不能写入它?

  •  6
  • zumalifeguard Arctic  · 技术社区  · 15 年前

    假设我有一个C级课程:

    class Foo
    {
        private List<Bar> _barList;
        List<Bar> GetBarList() { return _barList; }
    ...
    }
    

    客户可以称之为:

    var barList = foo.GetBarList();
    barList.Add( ... );
    

    有没有办法 Add 方法失败,因为只有只读版本的 _barList 回来了吗?

    2 回复  |  直到 15 年前
        1
  •  16
  •   Jay Riggs    15 年前

    是的,在 GetBarList() 返回 _barList.AsReadOnly() .

    编辑:
    正如Michael在下面指出的,您的方法必须返回 IList<Bar> .

        2
  •  4
  •   elder_george    15 年前

    你可以试着用 ReadOnlyCollection . 或者只从方法返回IEnumerable,客户端将没有方法来修改它。