在foreach循环中为对象分配值

时间:2020-01-03 06:44:23

标签: c# oop object

如何在foreach循环中为对象分配值。 代码如下:

using System;

namespace WorkingWithClasses
{
    class Program
    {
        static void Main(string[] args)
        {
        //create 5 player objects
        Player[] players = new Player[5];
        //assigning a value to a player brings null reference exception error:
        foreach(Player player in players)
        {
            player.Skill = 5;
        }


        float skillSum = 0;
        foreach(Player player in players)
        {
            skillSum += player.Skill;
        }

        Console.WriteLine(skillSum);
    }
}
class Player
{
    public float Skill { get; set; }
}
}

2 个答案:

答案 0 :(得分:3)

玩家数组中的每个“玩家”都没有初始化。尝试使用此for循环,而不要使用获取空引用的foreach循环:

for (var i = 0; i < players.Length; i++)
{
    players[i] = new Player() { Skill = 5 };
}

您也可以使用它,但是它比使用for循环遍历数组要慢:

using System.Linq;

players = Enumerable.Repeat(new Player() { Skill = 5 }, 5).ToArray();

答案 1 :(得分:0)

由于您正在创建数组所有者,因此需要初始化玩家实例对象。

Player[] players = new Player[5];替换为

Player[] players = Enumerable.Repeat(new Player(), 5).ToArray();