当前位置: 代码迷 >> 综合 >> C# 循环
  详细解决方案

C# 循环

热度:78   发布时间:2024-03-07 19:29:07.0

For循环与new对象

错误示例:

 /// <summary>
    /// 任务列表
    /// </summary>
    private void LoadTaskCell(QueryUpsellEmTaskReply replay)
    {
        for (int i = 0; i < replay.mainTasks.Count; i++)
        {

           //低级错误, new对象放在了循环里面。 new了n次!

            List<UserTask>  newMainTasksFinished = new List<UserTask>();
            List<UserTask>  newMainTasks = new List<UserTask>();

            if(replay.mainTasks[i].status == UserTask.STATUS.STATUS_FINISHED)
            {
                newMainTasksFinished.Add(replay.mainTasks[i]);
            }
            else
            {
                newMainTasks.Add(replay.mainTasks[i]);
            }
        }
        newMainTasks.AddRange(newMainTasksFinished);
        Debug.Log("返信原任务列表长度"+replay.mainTasks.Count);
        Debug.Log("排序后的新任务列表长度"+newMainTasks.Count);
        //Debug.Log("排序后的新任务列表最后一个元素序号: "+newMainTasks.Last().line);

        for (int i = 0; i <newMainTasks.Count; i++)
        {
            GameObject taskCell = (GameObject)Instantiate(Trans_RewardCell.gameObject, Trans_Content);
            taskCell.name = "task" + i;
            Debug.Log("单个任务: " + taskCell.name);
            taskCell.SetActive(true);

            UIHCtoEMcell item = taskCell.GetComponent<UIHCtoEMcell>();
            item.InitUI();
            item.SetCellData( newMainTasks[i]);
        }

    }

  相关解决方案