我有两个班:
class Player
{
public string Id { set; get; }
public int yPos { set; get; }
public List<Shot> shots;
public Player(string _Id, int _yPos)
{
Id = _Id;
yPos = _yPos;
}
}
class Shot
{
public int yPos { set; get; }
public Shot(int _yPos)
{
yPos = _yPos;
}
}
当我尝试将新镜头放入播放器的镜头列表中时,我得到NullReferenceException:
Player pl = new Player("Nick",50);
pl.shots.Add(new Shot(pl.yPos)); // this line throws exception
可能最终很简单。
答案 0 :(得分:6)
在Player
构造函数中,只需初始化shots = new List<Shot>();
答案 1 :(得分:1)
您需要在Player构造函数中(或在添加它之前)新建镜头。
shots = new List<Shot>();
答案 2 :(得分:0)
我更喜欢下面的内容,只有在需要时才初始化镜头,如果你需要添加逻辑来访问镜头,你可以不必改变镜头的使用。
private List<Shot> _shots;
public List<Shot> Shots
{
get
{
if (_shots == null)
{
_shots = new List<Shot>();
}
return _shots;
}
set
{
_shots = value;
}
}