数组Append方法失效求助:调用后数组未新增任何元素
数组追加元素失败的原因及解决方法
问题根源
C#里的数组是固定长度的,Append<gObject>(reg)方法不会修改原数组OBJECTS,而是返回一个包含新增元素的新数组。你当前的代码没有把这个新数组赋值回OBJECTS,所以原数组始终是空的,自然看不到新增元素。
修复方案1:接收Append的返回值
修改代码,将Append生成的新数组重新赋值给OBJECTS:
public gObject[] OBJECTS = {}; public void RegisterObjectToRender(gObject reg) { // 接收Append返回的新数组并覆盖原数组 OBJECTS = OBJECTS.Append<gObject>(reg).ToArray(); for (int ri = 0; ri < OBJECTS.Length; ri++) { Console.WriteLine(OBJECTS[ri].Name); } }
修复方案2:改用List(更推荐)
如果需要频繁添加元素,List<T>是更合适的选择,它支持动态扩容,Add()方法直接修改集合本身:
// 替换数组为List,支持动态添加元素 public List<gObject> OBJECTS = new List<gObject>(); public void RegisterObjectToRender(gObject reg) { OBJECTS.Add(reg); foreach (var obj in OBJECTS) { Console.WriteLine(obj.Name); } }
内容的提问来源于stack exchange,提问作者user15810432
相关产品推荐
相关产品推荐

