NullReferenceException未处理

时间:2012-12-04 22:23:47

标签: c# ado.net

我在向dataTable添加新团队时遇到了麻烦。 VisualStudio指向具有NullReference错误的line teams.Rows.Add(dr)。你能帮我吗?

        private void addTeam(String nazwa)
    {

        DataRow dr = players.NewRow();
        //dr["playerID"] = nazwa;

        dr["nazwa"] = nazwa;
        teams.Rows.Add(dr); //<--there is en error
    }


class Program
{
    static DataTable players ;
    static DataTable teams;
    private DataSet teamMenager;

    static void Main(string[] args)
    {

1 个答案:

答案 0 :(得分:2)

DataTable尚未initialized

static DataTable teams;

您可以使用default constructor

来初始化它
static DataTable teams = new DataTable();
static DataTable players = new DataTable();

虽然不清楚为什么你让它们变得静止。这意味着Program的每个实例都会共享相同的DataTable,这可能会导致多个线程出现问题,因为您需要提供锁定机制。只需删除静态并创建Program的实例:

static void Main(string[] args)
{ 
    Program p = new Program();
    p.Start(); // open your form(s) there and add teams or what else
    // ...

修改:还有其他错误。您是通过DataRow创建新的players.NewRow,但将其添加到DataTable teams。这是不允许的。每个DataRow都属于一个DataTable。这不能改变,将导致ArgumentException

DataRow dr = players.NewRow();
dr["nazwa"] = nazwa;

所以请将其添加到玩家:

players.Rows.Add(dr); //<--there is en error