実際の要件によって異なりますが、より適切なデータ構造を選択することが 1 つのアプローチになる可能性があります。
1 つの例は、キーとして a を持つディクショナリTuple<int, int>
です。最初の項目は行インデックスで、2 番目の項目は列インデックスです。「検索」はルックアップと O(1) になります。
Dictionary<Tuple<int, int>, MyObject> MyObjects;
MyObject o;
if(MyObjects.TryGetValue(Tuple.Create(r, s), out o)
{
//found, do sth...
}
ディクショナリに新しいオブジェクトを追加すると、次のようになります。
MyObjects.Add(Tuple.Create(o.rowIndex, o.colIndex), o);
何らかの理由で、すべてのオブジェクトを別のメソッドで反復する必要がある場合でもValues
、辞書のプロパティを使用してこれを行うことができます。
foreach(var o in MyObjects.Values)
{
// do something for each of your objects.
}