C#:引用在另一个类中生成的类的实例
我需要一些C#方面的帮助 假设我有三节课。主菜单、表格1和数据。 我在主菜单中创建了一个数据实例(引用为StoreData)C#:引用在另一个类中生成的类的实例,c#,class,instances,C#,Class,Instances,我需要一些C#方面的帮助 假设我有三节课。主菜单、表格1和数据。 我在主菜单中创建了一个数据实例(引用为StoreData) public partial class MainMenu : Form { public Data StoreData = new Data(); } 我希望能够访问Form1中StoreData的此实例。如何引用或导入它?如果您想在另一个类中引用一个类(并且不想使任何内容静态),则合成是一种方法 您希望引用Form1中MainForm
public partial class MainMenu : Form
{
public Data StoreData = new Data();
}
我希望能够访问Form1中StoreData的此实例。如何引用或导入它?如果您想在另一个类中引用一个类(并且不想使任何内容<代码>静态代码>),则合成是一种方法 您希望引用
Form1
中MainForm
的字段,因此您希望引用MainForm
本身。因此,您需要在main表单的Form1
中创建字段,类型:
public class Form1 : Form
{
...
public MainForm mf { get; set; }
...
}
现在,您可以使用mf访问StordeData
。Form1
中的StordeData
如果您想在另一个类中引用一个类(并且不想使任何内容静态
),则组合是一种方法
您希望引用Form1
中MainForm
的字段,因此您希望引用MainForm
本身。因此,您需要在main表单的Form1
中创建字段,类型:
public class Form1 : Form
{
...
public MainForm mf { get; set; }
...
}
现在,您可以使用mf.StordeData
在Form1
中访问StordeData,您可以
- 使
StoreData
static您可以
- Make
StoreData
static您可以在一个静态类中将StoreData设置为static,如下所示:
public static class Form1
{
public static Data StoreData { get; set; }
}
可以在静态类中使StoreData成为静态的,如下所示:
public static class Form1
{
public static Data StoreData { get; set; }
}
假设您的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;
}
}
试试看,也许对你有帮助
结果:
假设您的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;
}
}
试试看,也许对你有帮助
结果:
也许您可以将数据设置为类主菜单的静态成员?请将您的问题扩展到Form1是如何使用/相关的?Polly,他们为什么要将其设置为静态?这意味着,如果MainMenu有两个实例,它们将引用同一个StoreData对象。如果有对MainMenu对象的引用,则可以执行类似myMainMenuForm.StoreData的操作。否则,如果MainMenu创建了Form1,您可以像new Form1(this.Data)一样将其传递给构造函数StoreData
是公共的,因此只要您有对Main菜单
实例的引用,您也可以引用该属性?e、 g.myMainMenu.StoreData
在您给出的示例中,您正在为实例变量创建一个默认值,但从未实例化该类(因此没有您可以访问其变量的实例)。创建一个main菜单
——例如main菜单mmenu=newmain菜单()
然后访问它的StoreData
参数(mmenu.StoreData
)。也许你可以将数据设置为类主菜单的静态成员?你可以扩展你的问题以包括Form1是如何使用/相关的吗?@Polly,他们为什么要将其设置为静态的?这意味着,如果MainMenu有两个实例,它们将引用同一个StoreData对象。如果有对MainMenu对象的引用,则可以执行类似myMainMenuForm.StoreData的操作。否则,如果MainMenu创建了Form1,您可以像new Form1(this.Data)一样将其传递给构造函数StoreData
是公共的,因此只要您有对Main菜单
实例的引用,您也可以引用该属性?e、 g.myMainMenu.StoreData
在您给出的示例中,您正在为实例变量创建一个默认值,但从未实例化该类(因此没有您可以访问其变量的实例)。创建一个main菜单
——例如main菜单mmenu=newmain菜单()
然后访问其StoreData
参数(mmenu.StoreData
)。您的建议没有足够的上下文。如果其他类在其他地方使用/引用MainForm
,该怎么办?这些语义做出了一定的假设。可能是错的。我应该补充一句,可能是对的。我喜欢构图法,只是需要确保它在正确的时间使用。你是在没有足够的上下文的情况下提出这一点的。如果其他类在其他地方使用/引用MainForm
,该怎么办?这些语义做出了一定的假设。可能是错的。我应该补充一句,可能是对的。我喜欢作文法,只是需要确保它在正确的时间使用。对不起,还是在学习C#的开始阶段。使一个类保持静态意味着什么?对不起,仍然处于学习C#的开始阶段。使类保持静态意味着什么?@Kidsnd274,签出添加了结果的解决方案,可能对您有帮助:)@Kidsnd274,签出添加了结果的解决方案,可能对您有帮助:)