| 考え方を広げるヒントとしていくつか書いてみました。
1.Data を読み取り専用にしてしまうとか。
public class Data
{
public int a { get; private set; }
public int b { get; private set; }
public Data(int value1, int value2)
{
a = value1;
b = value2;
}
}
リストの値を書き換えたくなったら、リストに入れる参照自体を変える。
_dataList[0] = new Data(1, 2);
2.読み取り専用のインターフェースを作ってそれを見せるとか。
(キャストされると書き換えられますが)
interface IData
{
int a { get; }
int b { get; }
}
class Data : IData
{
public int a { get; set; }
public int b { get; set; }
}
IEnumerable<IData> で見せる。(C# 4.0 以上の 共変性 がないとコピーを作るハメになるが) |