如何在C#中的方法调用中传递对象实例?

时间:2013-11-01 23:04:13

标签: c# pass-by-reference class-instance-variables method-parameters

我有一个班级俱乐部有一个列表_list作为参数,而'玩家'是另一个班级...我有这种方法来添加俱乐部成员,thas是这样实现的:

public void AddPlayer(Player p)
{
    if(_list.Contains( p)) 
        throw new Exception("The Player " + p.Name + " " + p.Surname + " is already a         member of this club!");
    _list.Add(p);
}

现在,当我在主程序中执行此操作时:

Player p = new Player("Christiano", "Ronaldo", 1993);
Club club = new Club("ManUtd", coach);
club.AddPlayer(p);

它抛出一个异常,表示对象引用未设置为对象的实例。

2 个答案:

答案 0 :(得分:2)

(从OP评论中获取构造函数代码。)

在构造函数中,您似乎只是初始化该方法中的局部变量,而不是字段_list。

public Club(string clubName, Coach mycoach) 
{ 
     List<Player> _list = new List<Player>(); 
     ClubName = clubName; 
     Mycoach = mycoach; 
}

尝试更改

 List<Player> _list = new List<Player>(); 

为:

 _list = new List<Player>(); 

答案 1 :(得分:1)

听起来你的_list实例变量为null。尝试初始化它:

public class Club {
    private List<Player> _players = new List<Player>();
}