カスタムの「ポイント」クラスのリストがあるとしましょう (System.Drawing にあることは知っていますが、カスタムのクラスが必要だとしましょう)。このリストには同じポイントが含まれている場合があるため、たとえば、次のように設定されているとします。
List<customPoint> myPoints = new List<customPoint>();
myPoints.Add(new customPoint(1,5));
myPoints.Add(new customPoint(1,5));
myPoints.Add(new customPoint(2,3));
myPoints.Add(new customPoint(4,9));
myPoints.Add(new customPoint(8,7));
myPoints.Add(new customPoint(2,3));
後で計算を行う必要がありますが、重複は必要ありません。これよりもユニークなポイントの新しいリストを作成するよりエレガントな方法は何でしょうか:
List<customPoint> uniquePoints = new List<customPoint>();
for(int i; i < myPoints.Count; i++)
{
Boolean foundDuplicate = false;
int tempX = myPoints[i].X;
int tempY = myPoints[i].Y;
for(int j=0; j < uniquePoints.Count; j++)
{
if((tempX == uniquePoints[0].X) && (tempY == uniquePoints[0].Y))
{
foundDuplicate = true;
break;
}
}
if(!foundDuplicate)
{
uniquePoints.Add(myPoints[i]);
}
}
面倒なのはわかっていますが、それが、もっとエレガントな方法があるかどうかを尋ねている理由です。Linq の "Distinct" コマンドを調べましたが、機能していないようです。オブジェクトのインスタンス化には、まだ固有のものがあると思います。