【问题标题】:Declare Instance of Class with Dynamic Name使用动态名称声明类的实例
【发布时间】:2017-06-11 20:19:11
【问题描述】:

所以我创建了一个名为 SnakeItem 的类,我想在蛇长大时创建蛇项的新实例,它们遵循蛇的命名约定_Piece_[NUMBER]。已经有snake_Piece_0,我想在代码中声明一个新实例。我不知道该怎么说...

SnakeItem snake_Piece_0;
public game_Window()
{
    InitializeComponent();
    snake_Piece_0 = new SnakeItem(Resource1.Black, 0, 0);
}

然后在这个函数中,我想创建它。 (在snake_length++ 之后:) 我需要命名以递增,因此它遵循snake_length 变量。即如果snake_length = 1,那么它将创建一个名为snake_Piece_1的片段。

 private void fruit_Collision()
 {
    if (snake_Piece_0.Top == Fruit_Item.Top && snake_Piece_0.Left == Fruit_Item.Left)
    {
       snake_Length++;
    }
  }

如果不可能,我不确定我能说什么,我必须事先声明所有 400 条蛇,这是我要避免的。

【问题讨论】:

  • "如果不可能,我必须事先声明所有 400 条蛇" .. 好吧,或者使用数组或列表插入 SnakeItem 对象进入,然后通过它们的索引访问它们。
  • 我不知道我会怎么做,你能发表完整的回复吗?
  • Google 获取一些 C# 教程(侧重于集合),并花一些时间学习它。它会得到回报......
  • 我确实读过那个帖子,但我不明白它,我认为它是关于别的东西。

标签: c# declare


【解决方案1】:

这是初学者常做的事情——尝试用新名称动态创建新变量。我也尝试过这样做,直到我了解了Lists。

Lists 是可以存储可变数量对象的对象。以下是创建SnakeItem 的空列表的方法:

List<SnakeItem> snakeItems = new List<SnakeItem>();

您可以添加、访问和删除列表中的项目。以下是一些示例:

snakeItems.Add(new SnakeItem(Resource1.Black, 0, 0)); // add a new item to the list
snakeItems[0] // access the first item in the list. 0 is the first, 1 is the second, etc.
snakeItems.RemoveAt(0) // remove the first item of the list

基本上,每当您想创建一个新的“变量名”时,只需Add 一个新项目即可:

    if (snakeItems[0].Top == Fruit_Item.Top && snakeItems[0].Left == Fruit_Item.Left)
    {
        snakeItems.Add(...);
    }

如您所见,snake_Length 不再需要!您可以使用.Count 访问有多少蛇项目。将所有snake_Length 替换为snakeItems.Count

详细了解列表here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-04
    • 1970-01-01
    • 2018-03-08
    • 2011-08-07
    • 2015-10-20
    相关资源
    最近更新 更多