C# 如何访问列表中对象的属性?
编辑:为了澄清这个问题,我试图通过在一个列表中存储多个对象(所有对象都需要以不同的位置和方式绘制,并且每个对象都有自定义属性,例如形状)来收紧代码。我希望能够从列表中的任何给定对象访问这些属性中的一个,以用于各种目的,例如稍后在我的程序中绘制列表中该项特有的精灵 我试图访问我创建的列表中每个对象的特定属性,但似乎无法正确访问。我想我在列表中遗漏了一些基本的东西!这是我定义岛屿的课堂:C# 如何访问列表中对象的属性?,c#,monogame,C#,Monogame,编辑:为了澄清这个问题,我试图通过在一个列表中存储多个对象(所有对象都需要以不同的位置和方式绘制,并且每个对象都有自定义属性,例如形状)来收紧代码。我希望能够从列表中的任何给定对象访问这些属性中的一个,以用于各种目的,例如稍后在我的程序中绘制列表中该项特有的精灵 我试图访问我创建的列表中每个对象的特定属性,但似乎无法正确访问。我想我在列表中遗漏了一些基本的东西!这是我定义岛屿的课堂: class Island { public string IslandName { get; set;
class Island
{
public string IslandName { get; set; }
public Vector2 Position { get; set; }
public Rectangle IslandRectangle { get; set; }
public Island(string name, Vector2 position, Rectangle rectangle)
{
name = this.IslandName;
position = this.Position;
rectangle = this.IslandRectangle;
}
}
然后,在我的主要方法中,我创建了一个新的岛屿列表(目前只有一个):
我只想做一些类似伪代码的事情:
spritebatch.draw(sprite, islands.shepherdslookout.position, islands.shepherdslookout.rectangle);
我已尝试使用IEnumerable来执行此操作:
IEnumerable<Island> ShepherdsLookout = from island in allIslands where island.IslandName == "ShepherdsLookout" select island;
IEnumerable ShepherdsLookout=来自allIslands中的岛屿,其中island.IslandName==“ShepherdsLookout”选择岛屿;
但这似乎也不起作用:/
我需要一个foreach循环还是什么?我觉得有办法和Linq一起做,但我不确定 你可以做一些不同的事情:
Island theIsland = islands.Find(x => x.IslandName == "ShepherdsLookout");
Dictionary<string, Island> islands = new Dictionary<string, Island>();
要检索值有什么问题?怎么搞的?听起来好像你在试图从列表中找到一项;使用<代码>第一个()/代码>。考虑使用<代码>字典< /代码>。通常,是的,你需要一个迭代器。islands.shepherdslookout.position不是有效的访问器调用。您必须执行类似islands.get(0)的操作。position@SLaks建议,如果您想按名称访问字典,那么使用字典是非常有用的。通过对值进行迭代,您始终可以以与列表相同的方式访问它,但字典为您提供了直接访问的选项。在Island构造函数中,您正在反向执行赋值。例如,你想做
this.IslandName=name
@levinija捕捉得好,谢谢你这正是我要找的,谢谢,@SLaks和其他评论员太棒了!祝你好运
Island theIsland = islands.Find(x => x.IslandName == "ShepherdsLookout");
Dictionary<string, Island> islands = new Dictionary<string, Island>();
theIsland.Position