0

私はこのように実装されたクラスを持っています:

class Person
{
    public int ID { get; set; }
    public string FName { get; set; }
    public string LName { get; set; }
    public double[] Fees { get; set; }  

    public Person() { }

    public Person(
        int iD,
        string fName,
        string lName,
        double[] fees)
    {
        ID = iD;
        FName = fName;
        LName = lName;
        Fees = fees;
    }
}

次に、次のように、単純なボタン クリック イベントでコードをテストしようとしています。

Person p = new Person();
p.ID = 1;
p.FName = "Bob";
p.LName = "Smith";
p.Fees[0] = 11;
p.Fees[1] = 12;
p.Fees[2] = 13;

for (int i = 0; i < p.Fees.Length; i++)
{
    lstResult.Items.Add(p.ID + ", " + p.FName + ", " + p.LName + ", " + p.Fees[i]);
}

今のところ、必要なものを機能させるためだけに、すべてを本当に基本的かつシンプルにしています。

プログラムを実行すると、Visual Studio で次のエラーが発生します。

NullReferenceException was unhandled

このエラーは、Person オブジェクトの Fees 配列プロパティに関係しています。料金を特定の人物に関連付けるために、オブジェクトのプロパティとして配列が必要です。だから私がここでやろうとしていることが不可能でない限り、私はクラスで同じセットアップを維持したいと思います.

  • オブジェクトを正しくインスタンス化していませんか?
  • 配列プロパティを初期化するために、さらに何かをする必要がありますか?
  • 誰でも私が抱えている問題を見ることができますか?

辞書やその他のデータ構造の使用に関するアイデアを喜んで受け入れます。ただし、ここでやろうとしていることが絶対に不可能な場合に限ります。

私はグーグルで見回しましたが、運がありませんでした。古いクラス ノートとサンプル プロジェクトを見てきましたが、うまくいきませんでした。これが私の最後の希望です。誰か助けてください。みなさん、よろしくお願いします。

4

5 に答える 5

1

呼び出しているデフォルトのコンストラクターでは、初期化を行いませんfees

public Person() {
  this.Fees = new double[10]; // whatever size you want
}
于 2013-10-02T00:01:07.447 に答える
1

これ

Person p = new Person();
p.ID = 1;
p.FName = "Bob";
p.LName = "Smith";
p.Fees[0] = 11;
p.Fees[1] = 12;
p.Fees[2] = 13;

これに翻訳する必要があります

Person p = new Person(1,"Bob","Smith",new double[]{ 11, 12, 13 });
于 2013-10-02T00:01:57.033 に答える
1

次の行を追加

p.Fees = new double[3];

p.Fees[0] = 11;
于 2013-10-02T00:02:04.310 に答える
1

Fees を初期化する必要があります。例えば

Person p = new Person();
p.ID = 1;
p.FName = "Bob";
p.LName = "Smith";
p.Fees = new double[] {11, 12, 13};
于 2013-10-02T00:02:38.367 に答える