gpt4 book ai didi

c# - Visual C# - 访问在一个类中创建的对象的实例

转载 作者:可可西里 更新时间:2023-11-01 08:42:04 25 4
gpt4 key购买 nike

我提前道歉,根据范围可能会是一个相当简单/快速的答案,但我到处都看了,很惊讶没有想出答案。

我创建了一个名为 Soldier 的类,其中包含大约 100 个类变量。我需要用户输入信息并在几个不同的类表单的过程中逐渐构建一个 Solider 对象(因为仅在一个表单上收集的数据太多)。

我在 Form1.cs 中创建了一个士兵 (tempSoldier) 的(空)实例,并开始设置我从用户那里收集的对象的类变量。

private void button1_Click(object sender, EventArgs e)
{
Soldier tempSoldier = new Soldier();
tempSoldier.surname = textbox1.text;
}

我的问题:如何从其他类(Form2.cs、Form3.cs ...)中的 Form1.cs 访问对象实例 (tempSoldier)?

我应该提到所有的表单(Form1.cs、Form2.cs ...)共享同一个命名空间。

提前致谢

编辑:下面的所有解决方案都有效,所以这取决于您最喜欢哪一个。感谢您的反馈意见。请注意,确保将所有类修饰符设为 Public,包括您的自定义类(在我的示例中为 Soldier.cs)。

最佳答案

您需要在更高范围内声明 Soldier 实例。

这样做的一种方法是在 Form1 中声明它,然后将它传递给 Form2,依此类推。

public class Form1
{
private Soldier tempSoldier = new Soldier();

private void button1_Click(object sender, EventArgs e)
{
tempSoldier = new Soldier();
tempSoldier.surname = textbox1.text;
}

private void GotoNextStep()
{
// pass the existing instance to the next form
Form2 form2 = new Form2(tempSoldier);

// display form 2 ...
}
}

另一种可能性是在所有表单都可以访问的类中使用单例变量。

public class MyAppManager
{
private static readonly Soldier _soldier = new Solider();

public static Soldier SoldierInstance
{
get { return _soldier; }
}
}

private void button1_Click(object sender, EventArgs e)
{
MyAppManager.SoldierInstnace.surname = textbox1.text;
}

如果表格有不同的顺序,前一种方法是可以的;如果可以在不同时间使用或重新访问不同形式,则后者更好。

关于c# - Visual C# - 访问在一个类中创建的对象的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12335918/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com