6

私がC#クラスを持っているとしましょう:

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

クライアントはそれを呼び出すことができます:

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

Addの読み取り専用バージョンのみ_barListが返されるため、メソッドを失敗させる方法はありますか?

4

2 に答える 2

16

はい、GetBarList() お返しに_barList.AsReadOnly()

編集:
マイケルが以下で指摘したように、あなたのメソッドはを返す必要がありIList<Bar>ます。

于 2009-10-21T04:39:46.343 に答える
4

ReadOnlyCollectionを使用してみてください。または、メソッドからIEnumerableだけを返すと、クライアントはそれを変更するメソッドを持ちません。

于 2009-10-21T04:40:00.977 に答える