-3
public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    class mylist
    {
        public List<string> list1 = new List<string>();
    }

    class mylist2
    {
        public List<string> list2 = new List<string> { "aton", "electron" };
        public void listconvert()
        {
            mylist ml = new mylist();
            ml.list1.AddRange(list2);
            MessageBox.Show("do you kn ow");
        }
    }

    private void button1_Click(object sender, EventArgs e)
    {
        mylist2 ml2 = new mylist2();
        ml2.listconvert();
        mylist ml = new mylist();

        for (int i = 0; i < ml.list1.Count; i++)
        {
            textBox1.AppendText(ml.list1[i].ToString() + "\n");
        }
    }
}
4

2 に答える 2

0

これらの行に絞り込みます。

        mylist2 ml2 = new mylist2();
        ml2.listconvert();
        mylist ml = new mylist();

そのスニペットの 3 行目は、そのスニペットの 2 行目とは異なるタイプのインスタンスで動作していますmylist。次に、変数のインターレーターに進むmlと、そのリストはまだ何もしていません。

多分あなたはこれが欲しい:

public class mylist
{
    public List<string> list1 = new List<string>();
}

public class mylist2
{
    public List<string> list2 = new List<string> { "aton", "electron" };

    public void listconvert(List<string> other)
    {
        other.AddRange(list2);
        //MessageBox.Show("do you kn ow");
    }
}

private void button1_Click(object sender, EventArgs e)
{
    mylist ml = new mylist();
    mylist2 ml2 = new mylist2();

    ml2.listconvert(ml);   
    for (int i = 0; i < ml.list1.Count; i++)
    {
        textBox1.AppendText(ml.list1[i].ToString() + "\n");
    }
}
于 2015-01-29T03:03:14.520 に答える
0

2 つの問題があるようです。

まず、このコードはリストを作成しますが、参照をどこにも保存しないため、実質的に失われます。

    public void listconvert()
    {
        mylist ml = new mylist();
        ml.list1.AddRange(list2);
        MessageBox.Show("do you kn ow");
    }

次に、このコードは空のリストを作成し、この空のリストの要素をテキスト ボックスに追加しようとします。

        mylist ml = new mylist();

        for (int i = 0; i < ml.list1.Count; i++)
        {
            textBox1.AppendText(ml.list1[i].ToString() + "\n");
        }

おそらく、コードを次のように変更する必要があります。

    class mylist2
    {
        public List<string> list2 = new List<string> { "aton", "electron" };
        public mylist listconvert()
        {
            mylist ml = new mylist();
            ml.list1.AddRange(list2);
            MessageBox.Show("do you kn ow");
            return ml;
        }
    }

    private void button1_Click(object sender, EventArgs e)
    {
        mylist2 ml2 = new mylist2();
        mylist ml = ml2.listconvert();

        for (int i = 0; i < ml.list1.Count; i++)
        {
            textBox1.AppendText(ml.list1[i].ToString() + "\n");
        }
    }
于 2015-01-29T03:06:53.590 に答える