我需要C#的帮助。
假设我有3个班级。 MainMenu,Form1和Data。 我已经在MainMenu中创建了一个Data实例(称为StoreData)。
public partial class MainMenu : Form
{
public Data StoreData = new Data();
}
我希望能够在Form1中访问此StoreData实例。如何引用或导入它?
答案 0 :(得分:3)
您可以
StoreData
中将MyAWesomeStatic
设为静态,然后调用MyAWesomeStatic.StoreData
甚至在MainMenu
类中自行调用。StoreData
的引用传递给Form1
。MainMenu
的引用传递给form1
,并在需要时调用mainMenu.StoreData
。但是,另一种选择可能是全部使用Dependency Injection (DI)和Loosely Couple。有一个 Singleton 实例,并将内存中的 Data Store 作为某种 Service 传递(这是很酷的孩子可能会做的事情)。
更新
抱歉,仍处于学习C#的初期。这是什么意思 使一个类静态化?
鉴于您当前的知识水平和万事俱备,我认为最简单的方法可能只是通过参考
public class Form1
{
public Data StoreData { get; set; }
}
...
var form = new Form1();
form.StoreData = StoreData;
form.Show();
答案 1 :(得分:1)
如果您要引用另一类中的一个类(并且不想做任何事情static
),组成是一种选择。
您要引用MainForm
中Form1
的字段,因此要引用MainForm
本身。因此,您需要在Form1
类型的MainForm
中创建字段:
public class Form1 : Form
{
...
public MainForm mf { get; set; }
...
}
现在,您可以在StordeData
中用mf.StordeData
访问Form1
。
答案 2 :(得分:0)
您可以在一个静态类中将StoreData设为静态,如下所示:
public static class Form1
{
public static Data StoreData { get; set; }
}
答案 3 :(得分:0)
假设您的StoreData
类具有一个属性
public class StoreData
{
public int MyProperty { get; set; }
}
在您的mainform.cs中添加静态属性,并将值分配给MyProperty = 1
public partial class MainMenu : Form
{
public static StoreData Data { get; set; } //static property
private void MainMenu_Load(object sender, EventArgs e)
{
Data = new StoreData { MyProperty = 1 };
}
}
并在Form1.cs之内访问您的StoreData属性,例如
public partial class Form1 : Form
{
private void Form1_Load(object sender, EventArgs e)
{
var id = MainMenu.Data.MyProperty;
}
}
尝试一次可能对您有帮助
结果: