Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从类传递变量_C#_Class_Variables - Fatal编程技术网

C# 从类传递变量

C# 从类传递变量,c#,class,variables,C#,Class,Variables,我对C#很陌生。我用的是VS2010 将许多变量从form1传递到form2的最简单方法是什么? 我有一个包含10多个变量的类,但我不知道如何一次传递它们 也许有更好的方法吗?将变量重构为具有属性的类。创建这个类的一个实例,并在需要的地方传递它将public放在所有变量前面。然后,在设置form2时,您通常会在主代码窗口中看到文本,说公共类form2:Form。将其替换为公共类Form2:Form1,以便它采用Form1的所有属性。首先,您应该提供有关您的需求的更多详细信息,例如: 如果另一个表

我对C#很陌生。我用的是VS2010

将许多变量从
form1
传递到
form2
的最简单方法是什么? 我有一个包含10多个变量的类,但我不知道如何一次传递它们


也许有更好的方法吗?

将变量重构为具有属性的类。创建这个类的一个实例,并在需要的地方传递它

public
放在所有变量前面。然后,在设置form2时,您通常会在主代码窗口中看到文本,说
公共类form2:Form
。将其替换为
公共类Form2:Form1
,以便它采用Form1的所有属性。

首先,您应该提供有关您的需求的更多详细信息,例如: 如果另一个表单能够更改数据,并且这些更改将反映在第一个表单中,那么这两个表单是否在同一个appdomain和ect中运行

有很多方法可以做到这一点,这里只是我脑海中的一些方法:

  • 一个简单的方法是,让你的类实现一个 接口公开数据,并将其传递给 构造函数(getter+setters\只有getter依赖于逻辑)

  • 创建一个简单的dto(数据传输对象)并将其传递给另一个表单

  • 使用共享内存映射

  • 中间路线点服务

  • 套接字\同步上下文

  • 数据库


  • 很容易将所有变量声明为private,然后分配getter和setter,例如Form1:

    namespace WindowsFormsApplication1
    {
        public partial class Form1 : Form
        {
            private string var1;
            private string var2;
    
            public string Var1{get{return this.var1;}set{this.var1 = value;}}    
            public string Var2{get{return this.var2;}set{this.var2 = value;}}              
    
            public Form1()
            {
                InitializeComponent();
            }  
        }
    }
    
    然后,您可以从Form2中获取或设置变量,例如:

    namespace WindowsFormsApplication1
    {
        public partial class Form2 : Form
        {
            public Form2()
            {
                InitializeComponent();
    
                Form1 frm = new Form1();
    
                frm.Var1 = "Mystring1";
                frm.Var2 = "Mystring2";
    
                MessageBox.Show(frm.Var1);
                MessageBox.Show(frm.Var2);
            }
        }
    }
    

    只需传递该类的实例。您的问题可以使用一些更具体的方法和示例来完成。。。如果没有任何代码说明你想做什么,就很难说出什么是最好的。正确/最好的答案是这里的这个。拥有一个包含需要传递的属性的类-更干净的代码,并且所有内容都是自包含的。如果OP想要将某些属性声明为私有,该怎么办?我认为你的方法不够。克拉罗,它对私有变量不起作用。但这可能是最快最简单的方法。所以……是的,这对我很有效。下次我会尽量说得更具体一些,谢谢你的回答。这是推荐的方式链接: