【问题标题】:Array keeps resetting to zero数组不断重置为零
【发布时间】:2016-06-04 09:54:33
【问题描述】:

我创建了一个使用属性然后将该属性插入到数组中的方法。这个属性来自另一个类“玩家”,我试图让数组存储每个玩家的总数,但是当它增加到下一个玩家时,它会将其他玩家重置为零。

private void GetGrandTotal()
{
    int[] grandTotals = new int[players.Count];
    grandTotals[currentPlayerIndex] = currentPlayer.GrandTotal;
}

CurrentPlayerIndex 是一个在绑定列表中保存当前玩家索引的变量。

【问题讨论】:

  • 将此方法外的数组声明为全局数组,这样它就不会重新初始化它!

标签: c# arrays class


【解决方案1】:

这是因为你每次调用方法时都在重新初始化数组,所以全局声明并初始化数组ONCE,在方法中,只需将元素添加到数组中

【讨论】:

    【解决方案2】:

    当你打电话时

    private void GetGrandTotal()
    {
        int[] grandTotals = new int[players.Count];
        grandTotals[currentPlayerIndex] = currentPlayer.GrandTotal;
    }
    

    grandTotals 将具有玩家计数的大小并设置当前玩家的 GrandTotal。没关系。但是,如果您再次调用它,您将失去 grandTotals,因为您将获得它的新 instance,它会调整大小并设置新玩家的 grandTotal。应该是这样的;

        int[] grandTotals = new int[players.Count];
        private void GetGrandTotal()
        {
            grandTotals[currentPlayerIndex] = currentPlayer.GrandTotal;
        }
    

    所以数组不会在每次调用函数时都有一个新实例。但是要小心这个函数所属的类的实例。如果该类有一个新实例,您将再次遇到此问题。

    希望有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-16
      • 1970-01-01
      • 2012-02-27
      • 1970-01-01
      • 1970-01-01
      • 2021-02-17
      • 2017-03-18
      • 2020-11-27
      相关资源
      最近更新 更多