C# 无法使用“添加范围”将类中的列表复制到其他类中的其他列表

C# 无法使用“添加范围”将类中的列表复制到其他类中的其他列表,c#,list,addrange,C#,List,Addrange,我将把范围缩小到以下几行: public partial class Form1 : Form { public Form1() { InitializeComponent(); } class mylist { public List<string> list1 = new List<string>(); } class mylist2 { public

我将把范围缩小到以下几行:

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");
        }
    }
}
该代码段中的第三行使用的是与该代码段中的第二行不同的mylist类型实例。当您在ml变量上继续使用interator时,您还没有对该列表做任何操作

也许你想要这个:

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

您的应用程序似乎有两个问题

首先,此代码创建了一个列表,但没有将引用存储在任何位置,因此它实际上会丢失:

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");
    }
}
其次,此代码创建一个空列表,然后尝试将此空列表的元素添加到文本框中:

    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");
        }

欢迎来到堆栈溢出!你到底想做什么?是什么阻止了你的工作?请将其编辑到问题的正文中。这也有助于修复缩进,使代码连贯地显示出来。我正试图写一个脚本来处理来自分析仪器的数据。我发布的是一个简单的版本。我试图使用一个按钮在列表变量(从list2到list1)之间交换数据。我的问题是-这个脚本既没有给出错误也没有给出结果。是的,Joel。确切地非常感谢。我不清楚如何有效地将数据从一个类中的方法返回到其他类中相应的变量。现在很清楚了。非常感谢。我会试着在晚上给你回电话。谢谢你,谢谢你的快速反应。我会试试看,然后再打给你。我假设‘mylist ml=新的mylist;’只是创建类的对象,并用相同的数据保存变量-'list1',不管我用'mylist ml=new mylist;'调用类多少次@RajaSekharV—不管我用mylist ml=new mylist;调用类多少次,您所说的“不”是什么意思;。哦,对于内联代码,您可以在~下使用回勾,而不是一个引号。哎呀!我本想寻求神秘的帮助。我错误地复制了提案部分的代码。很抱歉我不知道该怎么收回。可能是因为你们不同意这个提议。我想分享流程图和图片,并讨论一下。有可能吗here@Raja-你可以发布一个新问题并包括图片,或者如果不是严格的问题,你可以创建一个聊天室并在那里进行讨论。
    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");
        }
    }