0

次のエラーが表示されます。

System.NullReferenceException: オブジェクト参照がオブジェクトのインスタンスに設定されていません。

この単体テストを実行しようとすると:

    [TestMethod]
    public void TestDecreaseTutorArea()
    {
        HelpWith info = new HelpWith();
        info.Subcategories[0] = 1;
        info.UserId = 14;

        TutorService tutorService = new TutorService();

        tutorService.DecreaseTutorArea(info);
    }

クラスは次のHelpWithようになります。

public class HelpWith
{
    public int UserId { get; set; }
    public int[] Categories { get; set; }
    public int[] Subcategories { get; set; }
}

私が間違っていることを誰かが知っていますか?何が何でinfo-Subcategoriesあるかを非常に明確にしたように思えます。

4

3 に答える 3

1

ここでエラーが発生します

[TestMethod]
public void TestDecreaseTutorArea()
{
    HelpWith info = new HelpWith();
    info.Subcategories[0] = 1; <<<<<<<<
}

info.Subcategoriesですのでnull。これを修正するには、次のようなコンストラクターを追加します

public class HelpWith
{
    public int UserId { get; set; }
    public int[] Categories { get; set; }
    public int[] Subcategories { get; set; }

    HelpWith()
    {
        Categories = new int[5];
        Subcategories = new int[5];
    }
}

また、リストは動的配列であるため、おそらく のList<int>代わりにを使用するint[]ことをお勧めします。サイズを拡大および縮小できます (つまり、 を使用する必要があるため、初期サイズを指定する必要はありませんint[])。

于 2013-05-21T08:43:23.103 に答える
0

コンストラクター内またはオブジェクトの作成後に、配列を初期化する必要があります。

    HelpWith info = new HelpWith();
    info.Subcategories = new int[20];
    info.Subcategories[0] = 1;
    info.UserId = 14;

システムは、これらの配列がどれくらいの大きさであるべきかを知るために他にどのように意図されていますか?

List<int>(または、配列の長さを管理したくない場合は、 などの別のデータ型を使用することを検討してください。ただし、それでも初期化する必要があります)

于 2013-05-21T08:43:46.557 に答える