-1

私はC#が初めてで、C#で探索しようとしていますが、リストボックスにリストを追加しようとしています.

私が抱えているエラーは次のとおりObject reference not set to an instance of an object. です。これを解決する方法はありますか?

namespace WindowsFormsApplication
{
    public partial class Form1 : Form
    {
        something a = something iets();

        public Form1()
        {
            InitializeComponent();
        }
// part1
        class something {

            public List<string> testing { get  ; set; }
        }

// part2
        private void button1_Click(object sender, EventArgs e)
        {
            a.testing.Add("programming");
            a.testing.Add("over");
            a.testing.Add("something");



            foreach (string i in a.testing)
            { listBox1.Items.Add(i); }
        }
    }
}
4

3 に答える 3

3

testingアクセスする前に、ある時点で初期化する必要があります。

たぶん、something クラスにコンストラクターを追加できます。

public something()
{
  testing = new List<string>();
}

上記のコメントで指摘されているように、置き換えます

something a = something iets();

これを以下に示します。

something a = new something(); //this should be the correct thing.
于 2013-03-12T19:47:12.623 に答える
2

あなたが取得している理由はNullReferenceException、クラス内の文字列のリストがsomething初期化されていないためだと思います。パラメーターなしのコンストラクターを定義し、そこでリストを初期化できます。

public something()
{
    testing = new List<string>();
}

また、クラス名とプロパティ名の最初の文字は通常大文字である (たとえば、のclass Something代わりに) ことも知っておく必要があります。class something

AddRangeさらに、 foreach ループで文字列を 1 つずつ追加する代わりに、このメソッドを使用できます。

listbox1.Items.AddRange(a.testing.ToArray());
于 2013-03-12T19:52:04.080 に答える
1

クラスの「何か」がリストを初期化することはありません。あなたがすべきことはこれです。

class something{
private List<string> _list;
public something(){
    _list = new List<string>();
}

public List<string> testing {get{return _list;} set{_list = value;}}

}

または、 a.testing.Add() の行の前に、 a.testing = new List(); を実行する必要があります。

于 2013-03-12T19:50:33.000 に答える