在列表中使用两个单独的字符串类型

时间:2013-12-04 04:32:42

标签: c#

好的,对于我的C#编程课我正在制作冒险游戏。我想我知道如何做大部分工作都会让我无法设置“世界”。

我有一个世界级(World.cs),我开始为每个房间创建一个列表。但是我很困惑为每个房间添加名称和描述。

例如,如果List(会议室)类型为String,我会room.Add("Prison", "This is a prison)。 做这个的最好方式是什么?

2 个答案:

答案 0 :(得分:7)

那是你创建一个类

的时候
public class Room {
   public string Name { get; set; }
   public string Description { get; set; }
}

并保留一份房间清单:

List<Room> rooms = new List<Room>();

要向列表中添加任何内容,只需执行以下操作:

rooms.Add(new Room { Name = "Prison", Description = "This is a prison" });

对象用于将数据组合在一起,这将允许更清晰的代码。它是面向对象编程的基石之一。

答案 1 :(得分:0)

你能做的最好的事情就是创造一个班级。

public class Room
{
    public string Name { get; set; }
    public string Description { get; set; }
}

然后您可以创建Rooms

列表
List<Room> rooms = new List<Room>();

添加对象

Room room = new Room { Name = "", Description = "" };
rooms.Add(room);

从现在开始,我将谈论存在的事情,但这不一定是最好的事情。

Extension methods

您可以创建一个这样的扩展方法

public static class ListRoomExtender
{
    public static void Add(this List<Room> rooms, string name, string description)
    {
        rooms.Add(new Room { Name = name, Description = description });
    }
}

正如我所指出的,此方法仅适用于房间列表。所以,如果我有

List<Room> rooms = new List<Room>();

我可以用

rooms.Add("Room name", "Room description");

其他类型的“清单”

  • StringDictionary
  • Dictionary<string, string>
    • 如果需要,您不能存储更多信息,只能存储一对字符串。
    • 您没有语义,您可以通过属性KeyValue访问数据。
    • 您无法使用相同的密钥添加两个项目。
  • List<KeyValuePair<string, string>>
    • 如果需要,您不能存储更多信息,只能存储一对字符串。
    • 您没有语义,您可以通过属性KeyValue访问数据。