【问题标题】:Trying To Get Count From List(Adding via Keypress)尝试从列表中获取计数(通过按键添加)
【发布时间】:2016-06-20 13:36:30
【问题描述】:

我是列表和数组的新手,所以我不确定这里发生了什么。我一般理解数组/列表的概念,但我试图在按键时添加新值。问题是它似乎正在将它添加到列表中,但是当我使用“myValue.Count >= someNumber”时,它不会返回最大值,即使它已经超过了它。但是,如果我要使用 for 循环,它可以工作,但我试图以 1 的增量添加它,而不是一次添加。我尝试搜索这个(以及 MSDN),但找不到解决方案。任何帮助,将不胜感激。编辑:对于那些熟悉 Unity 的人,它在“更新”方法中被调用。

 void Numbers()
{

    var keyDown = Input.GetKeyDown("k");

    List<newNumber> numbers = new List<newNumber>();

    if (keyDown)
    {
        numbers.Add(new newNumber(1));
        Debug.Log(numbers);
    }

   if (numbers.Count >= 10)
    {

        Debug.Log("You reached 10!");


   } 

class newNumber
{
    public int _num = 1;

    public newNumber(int num)
    {

        _num = num;

    }
}

【问题讨论】:

  • Numbers() 方法是如何被调用的,每次调用时,您都会创建一个新的 Numbers 列表,该列表将清除之前的列表,因此您的列表的长度始终为 1,因为您添加了一个数字然后下一个号码呼叫您创建清除号码列表的新列表。
  • 您似乎遗漏了部分源代码?您如何调用 Numbers 方法?由于每次调用该方法时都调用 new ,因此当到达 if 语句时,列表将永远不会包含多个元素。
  • 将列表存储在 Numbers 方法之外作为类变量。每次调用新列表时,您都在创建一个新的空列表。这就是为什么列表永远不会达到 10
  • @MarcusH 就是这样。谢谢!

标签: c#


【解决方案1】:

您可以将整个列表传递给您的函数,然后在任务完成后返回它:

class Number
{
    public int _num = 1;

    public Number(int num)
    {
        _num = num;
    }
}

List<Number> Add_A_Number(List<Number> MyList)
{
    // check condition to add or not
    // .. do your stuff
    // 
    MyList.Add(whatever); // example

    // once finished, return it

    return MyList;
}

B.S:使用正确的命名

【讨论】:

  • 据我所知,方法名称中的下划线不是正确的命名
  • @TheLethal 在函数名称前面的下划线如_AddANumber 不是100% 正确的正确命名,原因如下:stackoverflow.com/questions/783858/…
猜你喜欢
  • 2012-10-05
  • 1970-01-01
  • 1970-01-01
  • 2020-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多