如何在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; }
}
}
答案 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();