【问题标题】:List Returning 0 after Adding values through a for loop - c#通过for循环添加值后列表返回0 - c#
【发布时间】:2017-08-09 23:39:32
【问题描述】:

在此方法之后,我的列表计数返回 0 而它不应该返回。所有的调试都是正确的,它们都不是空的。我正在使用统一。 有谁知道问题出在哪里?

List<Coordinates> FillCoordinates()
{
    List<Coordinates> coordinatesList = new List<Coordinates>();
    Debug.Log(minLenght);
    Debug.Log(maxLenght);
    Debug.Log(heights.Count);
    for (int i = minLenght; i > maxLenght; i++)
    {
        for (int j = 0; j < heights.Count; j++)
        {
            coordinatesList.Add(new Coordinates(i, heights[j]));
        }
    }

    return coordinatesList;
}

坐标类:

public class Coordinates
{
    public int lenght;
    public float height;

    public Coordinates(int lenght_, float height_)
    {
        lenght = lenght_;
        height = height_;
    }
}

【问题讨论】:

  • for (int i = minLenght; i **&lt;** maxLenght; i++)
  • Lenght 是一个错字。应该是Length

标签: c# list unity5


【解决方案1】:

我猜这永远不会执行,改变 i

    for (int i = minLenght; i > maxLenght; i++)
    {
        for (int j = 0; j < heights.Count; j++)
        {
            coordinatesList.Add(new Coordinates(i, heights[j]));
        }
    }

【讨论】:

  • 我不希望他在最大长度之前停止我希望我在我等于最大长度时停止。你觉得它有什么不执行的理由吗?
  • for 循环永远不会执行,因为 i 等于 minLenght,而 minLenght 不大于 maxLenght。您需要将“>”更改为“
【解决方案2】:

@obl 是对的,这不会执行:

for (int i = minLenght; i > maxLenght; i++)

for 循环语句如下: “在minLength 处以i 开始,当i 大于maxLength 时,运行循环,然后递增i。”

由于 i 不大于 maxLength,循环将永远不会运行。

改成这样:

for (int i = minLenght; i < maxLenght; i++)

“在minLength 处以i 开始,当i 小于maxLength 时,运行循环,然后递增i。”

它现在将从minLength 一直运行到maxLength-1

你是对的,当i 等于maxLength 时,它不会最后一次运行循环。要解决这个问题(如果它真的是你想要的),只需像这样调整它:

for (int i = minLenght; i <= maxLenght; i++)

“在minLength 处以i 开始,当i 小于或等于maxLength 时,运行循环,然后递增i。”

【讨论】:

  • 真的,我不知道为什么,但我在想对面,谢谢
猜你喜欢
  • 2016-10-12
  • 2017-01-16
  • 1970-01-01
  • 1970-01-01
  • 2021-07-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-30
  • 2021-12-17
相关资源
最近更新 更多