获取任意对象列表并初始化所有对象

本文关键字:对象 初始化 列表 任意 获取 | 更新日期: 2023-09-27 17:56:59

        bgList.Add(bg1);
        bgList.Add(bg2);
        bgList.Add(bg3);
        bgList.Add(bg4);
        bgList.Add(bg5);
        //Initialize all background objects
        for (int i = 0; i < bgList.Count; i++)
        {
            bgList[i] = new Sprite();
            bgList[i].Scale = 2.0f;
        }

这是这样做的合法方法吗?基本上,问题归结为"我可以使用 for 循环初始化对象列表吗?

我在 bg1、bg2、bg3、bg4 和 bg5 对象上收到"此对象永远不会不为空"警告,这让我想知道是否不允许使用这种技术。

获取任意对象列表并初始化所有对象

这些语句等效:

bg1 = new Sprite();

bgList.Add(bg1);
bgList[0] = new Sprite();

后者不会将对新实例的引用分配给bg1。它只是将新实例存储在第 0 个位置。

因此,使用集合和循环来实例化许多变量并不是一个可行的捷径。您必须显式实例化每个变量,或者从一开始就使用数组或集合。

foreach 肯定会更容易,y 你应该能够做到,但 imo 你也可以在循环中添加类似的东西。

  for (int i = 0; i < bgList.Count; i++)
        {
            var bglistitem = new Sprite()
            bhlistitem.Scale = 2.0f;
            bgList.Add(bglistitem);
        }