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!
            //*******************
        }
    }
}

我甚至试着在第一节课上把所有的东西都公开,但无论我做什么,我在第二节课上总是收到空单子。

C#-访问从一个类到另一个类的对象列表

Form1Ribbon1之间没有任何关系,如何访问另一个的实例?

有了这个:

        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>();