0
        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 对象上收到“此对象永远不会为空”警告,这让我想知道是否不允许使用这种技术。

4

2 回答 2

2

这些语句等价:

bg1 = new Sprite();

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

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

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

于 2013-02-01T00:26:58.617 回答
0

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

  for (int i = 0; i < bgList.Count; i++)
        {
            var bglistitem = new Sprite()
            bhlistitem.Scale = 2.0f;
            bgList.Add(bglistitem);
        }
于 2013-02-01T00:27:11.277 回答