クラスCharListには、プライベートリスト(List <List <NewChar >>)といくつかのインデクサーがあります。
private List<List<NewChar>> _charList;
// ...
public NewChar this[Int32 inner, Int32 outer]
{
get
{
if (inner < 0 || inner >= _charList.Count ||
outer < 0 || outer >= _charList[inner].Count)
throw new ArgumentException("NewCharList indexer[,]: Invalid index!");
return _charList[inner][outer];
}
}
public List<NewChar> this[Int32 index]
{
get
{
if (index < 0 || index > MaxCharListIndex)
throw new ArgumentException("NewCharList indexer[]: Invalid index");
List<NewChar> ret = new List<NewChar>(_charList[index].Count);
for (int i = 0; i < _charList[index].Count; i++)
ret.Add(_charList[index][i]);
return ret;
}
}
テストコード(別のクラス)で、
charList[0] = null;
「プロパティまたはインデクサーxxxを割り当てることができません-読み取り専用です」というコンパイラエラーが発生しますが、
charList[0][0] = new NewChar(22,22);
値は変更されませんが、コンパイラはそれを許可します。なぜ私は2番目に割り当てることができますか?私は私の人生のためにそれを理解することができません、そしてそれは私を怒らせています!(値は変わりませんが)