0

新しいチームを dataTable に追加するときに問題が発生しました。VisualStudio が行 team.Rows.Add(dr) を指しており、NullReference エラーが発生しています。手伝ってくれませんか?

        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)
    {
4

1 に答える 1

2

DataTableまだ初期化されていません

static DataTable teams;

たとえば、デフォルトのコンストラクタを使用して初期化できます。

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
    // ...

編集:他に何か問題があります。新しいDataRowviaを作成players.NewRowしていますが、DataTableに追加していますteams。それは許可されていません。すべてのDataRowは1つのDataTableに属しています。これは変更できず、結果としてArgumentException

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

代わりにプレイヤーに追加してください:

players.Rows.Add(dr); //<--there is en error
于 2012-12-04T22:26:31.607 に答える