C# 在两个类之间共享一个变量

C# 在两个类之间共享一个变量,c#,visual-studio-2010,variables,C#,Visual Studio 2010,Variables,我在一个项目中有两个不同的.cs窗口。每个人都运行我程序的不同部分。但是现在我需要在Form.cs中使用mainwindow.cs的一个变量(I)。这个变量一直在变化。 我怎么做 MAINWINDOW.CS namespace samples { using System.IO; ........ public partial class MainWindow : Window { float i; }

我在一个项目中有两个不同的.cs窗口。每个人都运行我程序的不同部分。但是现在我需要在Form.cs中使用mainwindow.cs的一个变量(I)。这个变量一直在变化。 我怎么做

MAINWINDOW.CS

   namespace samples
   {
     using System.IO;
     ........
     public partial class MainWindow : Window
       {
       float i;     
       }
    }   
表格1.CS

    namespace samples
    {
    public partial class Form1 : Form
    {
        public Form1()
        {
        InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
        ....
        chart1.Series["Pakistan"].Points.AddXY(i, j);
        }
    }
    }

如果您在没有访问修饰符的情况下声明了变量,那么它将隐式地
private
,因此只能在声明它的类中访问(
MainWindow
)。可以添加访问修饰符:

internal float i;
这将允许您从程序集中的其他类访问
i
,如
Form1

有关访问修饰符的更多信息,请参见MSDN:

但是,您几乎不应该在类之外公开像
i
这样的字段;相反,您要做的是使用属性:

private float i;

public float I
{
    get { return i; }
    set { i = value; }
}
更好的是,您可以使用一个自动实现的属性,这样您甚至不需要一个支持字段(
i
):

公开属性而不是字段更好的原因有很多。(它以VB为中心,但理论应该是一样的)


附录:请考虑变量的适当命名约定。code>i不是变量的好名字。

如果不提及,默认的访问修饰符是私有的。公开

public float i {get; set;}  

通过全局修饰符ie
static
?将其设置为静态或将其传递给Form1的构造函数您可以在另一个表单中保留一个表单的引用。它们是两个独立的应用程序吗?MainWindow是否有Form1的实例?
public float i {get; set;}