C#-访问从一个类到另一个类的对象列表
本文关键字:另一个 列表 对象 一个 访问 C#- | 更新日期: 2023-09-27 18:26:46
我遇到了一个非常奇怪的问题,我在一个类中创建了一些对象的列表,然后试图在另一个类访问它,但在其他类中它变空了:
我填充列表的第一个类:
namespace dragdrop
{
struct BR
{
private string var;
public string Var
{
get { return var; }
set { var = value; }
}
private string equalsTo;
public string EqualsTo
{
get { return equalsTo; }
set { equalsTo = value; }
}
private string output;
public string Output
{
get { return output; }
set { output = value; }
}
private string els;
public string Els
{
get { return els; }
set { els = value; }
}
private string elsOutput;
public string ElsOutput
{
get { return elsOutput; }
set { elsOutput = value; }
}
}
public partial class Form1 : Form
{
//******************
private List<BR> list = new List<BR>(); //This is the list!
//******************
internal List<BR> List
{
get { return list; }
set { list = value; }
}
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
string[] vars = new string[] { "Name", "Gender", "Age", "Address", "email" };
comboBox1.DataSource = vars;
}
private void button1_Click(object sender, EventArgs e)
{
BR b = new BR();
b.Var = comboBox1.SelectedItem.ToString();
b.EqualsTo = textBox1.Text;
b.Output = textBox2.Text;
list.Add(b);
//*****************
textBox1.Text = List.Count.ToString(); //This gives the correct count value!
//*****************
//this.Close();
}
}
}
我在第二类访问它,比如:
namespace dragdrop
{
public partial class Ribbon1
{
private void Ribbon1_Load(object sender, RibbonUIEventArgs e)
{
}
private void button1_Click(object sender, RibbonControlEventArgs e)
{
Form1 form = new Form1();
List<BR> l = form.List; ;
//*******************
MessageBox.Show(form.List.Count.ToString()); //This strangely gives count 0!
//*******************
}
}
}
我甚至试着在第一节课上把所有的东西都公开,但无论我做什么,我在第二节课上总是收到空单子。
Form1
和Ribbon1
之间没有任何关系,如何访问另一个的实例?
有了这个:
Form1 form = new Form1(); // new instance of Form1
List<BR> l = form.List; ; // of course the list is empty in a new instance!
您永远无法访问来自Form1
的另一个实例的值。
由于我不知道你的类是如何连接的,所以我不能给你更多的建议,而只是看看OO关系的这个好的概述。你必须以某种方式将它们联系起来,我非常推荐组合//聚合(同样的事情,不同的学校)。
我所需要做的就是使列表成为第一类中的静态成员,这解决了当我试图在Ribbon1类中创建Form1的新实例时具有不同值的问题。
private static List<BR> list = new List<BR>();