2011-07-14 7 views
3

アイテム(クラスのインスタンス)をリストに追加すると、新しいアイテムのインデックスを知る必要があります。どの機能でも可能ですか?C#のリストに新しく追加されたアイテムのインデックスを取得するにはどうすればよいですか?

例コード:すぐに追加する前に

MapTiles.Add(new Class1(num, x * 32 + cameraX, y * 32 + cameraY)); 
+0

MapTilesはリストから継承しますか?そうでない場合は、MapTilesクラスを投稿してください。それ以外の場合は、Addはリストの最後に追加されるため、インデックスはMapTiles.Count-1です。 –

答えて

6

MapTiles.Countあなたのリストに追加されます、次の項目のインデックスのような

何か与える:あなたは常に.Add(T);メソッドを使用している場合

Console.WriteLine("Adding " + MapTiles.Count + "th item to MapTiles List"); 
MapTiles.Add(new Class1(num, x * 32 + cameraX, y * 32 + cameraY)); 
2

読むCount

int index = MapTiles.Count; 
MapTiles.Add(new Class1(num, x * 32 + cameraX, y * 32 + cameraY)); 
5
Class1 newTile = new Class1(num, x*32 + cameraX, y*32 + cameraY); 
MapTiles.Add(newTile); 
int index = MapTiles.IndexOf(newTile); 
+0

リストのサイズが状態で維持されるので、.Countの使用はより速くなりますが、インデックスを使用する方が正しい/読みやすいようです。 – RhysC

+0

オブジェクトの*最初の*オカレンスを返すときに 'IndexOf()'を使わないでください。同じオブジェクトを複数回追加した場合は、 'LastIndexOf()'を使用してください。 – mireazma

2

をし、 .Remove(T);を使用しない場合、インデックスはCount - 1になります。

関連する問題