Я пытался выполнить простую задачу на C#, поместить объекты в список, я сделал это раньше, но никогда не сталкивался с этой проблемой. После нескольких поисков, столкнувшихся с людьми с аналогичными проблемами и некоторыми решениями, но никто не исправил мою проблему, вот код.Список содержит повторяющиеся элементы
static void GenerateRooms(int RoomsNumber)
{
int randomWidth;
int randomHeight;
Room newRoom = null;
for (int i = 0; i < RoomsNumber; i++)
{
//Create new rooms and store it on the list
randomWidth = rand.Next(_MinRoomW, _MaxRoomW + 1);
randomHeight = rand.Next(_MinRoomH, _MaxRoomH + 1);
//Room(x, y, id)
newRoom = new Room(randomWidth, randomHeight, i);
//1
_RoomsL.Insert(i, newRoom);
}
}
После комментария 1, я на самом деле поиска в списке, и все объекты есть, от 0 до последнего, но когда я выйти из этой функции в любой другой, например, что один, например:
static void CheckList()
{
foreach(Room nextRoom in _RoomsL)
{
Console.WriteLine(" This room have the id: " + nextRoom.GetId());
}
}
Все объекты в этом списке имеют одинаковый идентификатор, в этом случае идентификатор равен последнему объекту добавляется в списке на первом методе ...
Так его так:
GenerateRooms(RoomsNumber); << at the end of this function, the list is ok.
CheckList(); << just after exiting the last function and checking the same list, all the objects are the same.
Я тоже пробовал использовать list.Insert
, но ничего не менял. Я действительно не знаю, что делать.
Класс помещения.
class Room
{
//This is random.
public static Random rand = new Random();
//Room variables
public static int rWIDTH, rHEIGHT;
public static int ROOMID;
public Room(int X, int Y, int id)
{
rWIDTH = X;
rHEIGHT = Y;
ROOMID = id;
}
public int GetWidth()
{
return rWIDTH;
}
public int GetHeight()
{
return rHEIGHT;
}
public int GetId()
{
return ROOMID;
}
}
Не могли бы вы разместить свой метод Room.GetId()? Это было бы полезно. – c0d3b34n
или класс комнаты –
Почему каждый метод статичен? Не похоже, что у вас есть материал без гражданства внутри вас, поэтому все статичное не может быть хорошим дизайном. Во всяком случае, это не платформа для просмотра кода ;-) – Mat