像动态数组的东西

时间:2016-01-12 17:38:35

标签: arrays instance monogame

盖伊,我想做一些像动态数组这样的事情,但我不想使用List。

ccf(airquality$Wind,airquality$Temp)

为什么创建新实例不起作用?

1 个答案:

答案 0 :(得分:0)

首先,为什么你不想使用List并不是很清楚。

虽然根据你的代码,我假设你真正想要的是你想要从硬编码的字符串数组(纹理名称)创建一个纹理数组。

但在我向您展示另一种方式之前,让我解释为什么spriteHouses仍为空。

当您将spritHouses参数传递给LoadTextures方法时,您实际所做的是传递“值”的副本(即null)方法。这意味着texture变量在方法开始时将为null,但之后您将为其分配新值new Texture2D[names.Count()];

此时texture变量具有您想要的结果,但是当该方法返回时,该数组的本地副本将被丢弃,spriteHouses仍然为空。这有意义吗?

无论如何,简单的解决方法是返回新数组,而不是将其作为参数传递。

public Texture2D[] spritHouses; 

protected override void LoadContent()
{
    spritHouses = LoadTextures(@"Sprits/Guns/", "Big", "Medium", "Small");
}

public Texture2D[] LoadTextures(string trace, params string[] names)
{
    var textures = new Texture2D[names.Count()];

    for (int i = 0; i <= names.Count()-1; i++)
        textures[i] = Content.Load<Texture2D>(trace + names[i]);

    return textures;
}
相关问题