使用类的对象填充列表

Gre*_*rey 0 c# list

我目前正在制作一个带有随机生成的房间的游戏,当我迭代新创建的房间以检查它们的坐标以将它们添加到图表中时,我有一个房间列表。

list<Room> listOfAllRooms;
Run Code Online (Sandbox Code Playgroud)

我可以继续使用笨拙的方式来指定所有房间对象的存储位置。

list<Room> listOfAllRooms = new List<Room> {roomObject.room1, ...}
Run Code Online (Sandbox Code Playgroud)

它们存储在另一个类中只是为了保持整洁,就像这样......

public class RoomObjects { public static Room room1 = new Room(); .....}
Run Code Online (Sandbox Code Playgroud)

一路25个房间。

这简直令人难以置信,如果我扩展到目前正在使用的 25 个房间之外,将会产生一个严重的问题。在我看来,应该存在一种方法可以直接从一个整洁的来源填充所有房间的列表。所以我的问题实际上归结为是否有更好的方法来声明这些对象并将它们自动存储到列表中?或者至少有一种方法可以自动将每个房间添加到列表中?

(注意,我有很大一部分代码处理所有房间的列表,所以我希望我不必重新编写它来解决这个问题)

Ste*_*pUp 5

你的Room班:

public class Room
{
    public string NameRoom { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

要创建 Room 类的对象,可以使用模式Factory Pattern。通过这种模式,我们开发了一个抽象,它隔离了创建类的逻辑。该模式的实现非常简单,请参阅:

public static Room FactoryOfRoom(string roomName)
{
    return new Room() { NameRoom=roomName };
}
Run Code Online (Sandbox Code Playgroud)

您可以在这段代码中按模式填充列表Factory Pattern

static void Main(string[] args)
{
   List<Room> listRoom = new List<Room>();
   for (int i = 0; i < 25; i++)
   {
       listRoom.Add(FactoryOfRoom(i.ToString()));
   }       
}
Run Code Online (Sandbox Code Playgroud)

如果这不是您想要的,请随时纠正我。

  • @Grey 阅读有关模式的更多信息:)。它是编程世界真正的宝藏。例如,我读过的最好的书是 https://en.wikipedia.org/wiki/Design_Patterns,此链接非常有用 https://csharpdesignpatterns.codeplex.com (2认同)