Невозможно использовать "Добавить диапазон" для копирования списка в классе в другой список в другом классе
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");
}
}
}
2 ответа
Решение
Я ограничу это до этих строк:
mylist2 ml2 = new mylist2();
ml2.listconvert();
mylist ml = new mylist();
Третья строка в этом фрагменте работает с другим экземпляром вашего 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");
}
}
У вас, кажется, есть две проблемы.
Во-первых, этот код создает список, но нигде не хранит ссылку, поэтому он фактически теряется:
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");
}
}