Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何访问列表中对象的属性?_C#_Monogame - Fatal编程技术网

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