是否有一种方法来添加到一个列表两个变量与一行代码

本文关键字:两个 变量 一行 列表 代码 一种 方法 是否 添加 一个 | 更新日期: 2023-09-27 18:18:17

int[,] map = new int[,]
{
 {1,1,1,0,0,0,0,0,},
 {0,0,1,0,0,0,0,0,},
 {0,0,1,1,0,0,1,1,},
 {0,0,0,1,0,0,1,0,},
 {0,0,1,1,0,0,1,0,},
 {0,0,1,0,0,0,1,0,},
 {0,0,1,1,1,0,1,0,},
 {0,0,0,0,1,1,1,0,},
};
int[,] map1 = new int[,]
{
 {0,0,0,1,1,1,1,0,},
 {0,0,0,1,0,0,1,0,},
 {0,0,0,1,1,0,1,0,},
 {1,1,0,0,1,0,1,0,},
 {0,1,0,0,1,0,1,0,},
 {0,1,1,1,1,0,1,0,},
 {0,0,0,1,1,0,1,1,},
 {0,0,0,0,0,0,0,0,},
};
        private List<Texture2D> tileTextures = new List<Texture2D>();
        private List<int[,]> MapsArrays = new List<int[,]>();
        public void AddMaps()
        {
            MapsArrays.Add(map);
            MapsArrays.Add(map1);
        }

现在我正在添加(map)然后添加(map1)…但如果我有30个映射变量。我怎么能添加它们所有自动也许与循环得到所有的变量开始与地图和添加它们?

是否有一种方法来添加到一个列表两个变量与一行代码

我将在这里添加另一种方法。

在不知道你的确切结构的情况下,我只会说"add them inline"。也就是说,不要单独声明它们,直接将它们添加到列表中。另一个选项是查找字典:

private IDictionary<string, int[,]> maps = new Dictionary<string, int[,]>();
public void Init() {
    maps.Add("map", new int[,]
        {
         {1,1,1,0,0,0,0,0,},
         {0,0,1,0,0,0,0,0,},
         {0,0,1,1,0,0,1,1,},
         {0,0,0,1,0,0,1,0,},
         {0,0,1,1,0,0,1,0,},
         {0,0,1,0,0,0,1,0,},
         {0,0,1,1,1,0,1,0,},
         {0,0,0,0,1,1,1,0,},
        });
    maps.Add("map1", new int[,] ... // second one here
}

如果你需要引用它们,这有快速查找的好处。但也允许您只声明一次映射(它们被添加到字典中)。然后你可以通过它们的键来引用它们:

var map1 = maps["map1"];

听起来您正在寻找AddRange扩展方法:

MapsArrays.AddRange(new [] { map, map1 });

请记住,您可能需要将MapsArrays转换为List<Map>才能工作。

(不要害怕尝试西蒙的解决方案,它一点也不坏)

要在一行中完成此操作,您可以创建自己的Extension方法:

public static class Extensions
{
    public static void AddMany<T>(this List<T> list, params T[] input)
    {
        list.AddRange(input);
    }
}

你可以这样使用:

public void AddMaps()
{
    MapsArrays.AddMany(map, map1, map2);
}