在C#中传递List元素

时间:2020-08-09 00:41:23

标签: c# console-application

尝试文字冒险游戏。 Visual Studios 2019,控制台应用程序。

我有这样的房间课程

  public class Room
    {
        public string name;
        public string description;
        public int roomNumber;
        public int lightLevel;
        public int trap;
        public int flag1;
        public int flag2;
        public int north;
        public int northeast;
        public int east;
        public int southeast;
        public int south;
        public int southwest;
        public int west;
        public int northwest;
        public int up;
        public int down;
    }
    

和带有“房间”数据的文本文件。

{front street}
{standing in a dirt road.} 
{1 10 0 0 0 0 0 2 0 0 0 0 0 0 0}
{front street}
{standing on a dirt road on the edge of town.}
{2 10 0 0 0 0 0 3 0 0 0 1 0 0 0}

我有112个房间(或街区),它们被读入列表。我计划将此列表扩展到大约400个房间。我需要将一些房间传递给几种不同的方法。我可以通过整个列表,这并不是一个好主意。这需要传递大量数据,并且了解gremlins在大量多余数据中找到了自己的方式。我可以这样传递单个元素...

PrintRoom(ref rooms[currentRoom].name);

但是我似乎找不到通过单个房间的正确语法。我想一次通过一个房间/一个街区。实际上,我只需要确定最后的十个要素,就可以确定玩家是否可以朝某个方向前进,但是我认为对于所有工作而言,通过整个房间会比较容易。 那么,传递单个房间(或街区)的正确语法是什么? 该函数的标题是什么样的?

我先谢谢你。

1 个答案:

答案 0 :(得分:1)

如果将它们读入列表,为什么不尝试使用LINQ?您可以使用lambda表达式来获取所需的信息,并且如果您想投影到一个对象中,该对象具有多个属性,而该属性却少于整个属性集合,则可以使用这种方法获得更大的灵活性。

public class LinqExample
{
    public void LinqMethod()
    {
        var rooms = new List<Room> 
        { 
            new Room
            {
                name = "roomA",
                description = "Desc Abc",
                roomNumber = 1,
                // etc
            },
            new Room
            {
                name = "roomB",
                description = "Desc Def",
                roomNumber = 1,
                // etc
            }
        };

        var room = rooms.FirstOrDefault(x => x.name == "roomB");

        PassRoomExample(room);
    
    }

    public void PassRoomExample(Room room)
    {
        Console.WriteLine($"name: { room.name }, Description: { room.description }, Room #: {room.roomNumber}");
    }
}