我目前正在尝试创建一个简单的rpg C#游戏,并且在地图创建部分还停留得很早。
我为自己的位置创建了一个类:
public class Location
{
private int ID;
private string Name;
public Location(int id, string name)
{
ID = id;
Name = name;
}
}
我还创建了一种方法,该方法将位置信息填充到列表中。在主程序区域之外,我创建了该列表,因此所有内容均可访问该列表:
List<Location> map = new List<Location>();
public void CreateMap()
{
Location start = new Location(1, "START");
Location forest = new Location(2, "FOREST");
Location city = new Location(3, "CITY");
map.Add(start);
map.Add(forest);
map.Add(city);
}
CreateMap();
但是,我现在陷入困境,因为我不知道如何访问列表中的位置对象的参数,因为我只找到了如何从Internet上的列表中访问字符串,或者我所做的非常复杂和令人困惑的答案一点都不明白。我想以某种方式使用静态类,因为我了解到它们在我们不想访问类中的信息时很有用,但是我认为我不太了解它们的概念。
tl; dr:我想从列表中删除特定对象的ID /名称,但我不知道如何。
更改您的Location类以使用公共属性:
public class Location
{
public int Id {get;set;}
public string Name {get;set;}
}
然后,您的CreateMap将如下所示:
List<Location> map = CreateMap();
public List<Location> CreateMap()
{
return new List<Location> {
new Location {Id=1, Name="START"},
new Location {Id=2, Name="FOREST"},
new Location {Id=3, Name="CITY"}
};
}
然后,您可以像这样引用位置:
map.First(m=>m.Id==1).Name
虽然,我怀疑您会按ID进行很多查找,并且您的List很有可能是一个Dictionary或一个索引为ID的简单数组,这将使位置查找快得多。在这种情况下,您可以轻松地将其转换成这样的字典:
Dictionary<int,Location> mapDict = CreateMap.ToDictionary(k=>k.Id, v=>v);
然后,您可以通过ID来访问位置,如下所示:
var location = mapDict[1];
var name = location.Name;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句