C# 方法返回值在更改为另一种形式后重置值
我有一个表格,表格2,其中包含一个刽子手游戏(是的,这是一个类似于我在上一个问题中提到的刽子手游戏),一旦玩家完成游戏,玩家将进入两个表格中的任何一个,表格4和表格6(一个是获胜的祝贺表格,另一个是失败的嘲笑/失败表格)在表格4和表格6中,都有一个标签,显示玩家从上一个表格2中获得的分数 我在表格2中放置了一个返回分数值的方法C# 方法返回值在更改为另一种形式后重置值,c#,forms,C#,Forms,我有一个表格,表格2,其中包含一个刽子手游戏(是的,这是一个类似于我在上一个问题中提到的刽子手游戏),一旦玩家完成游戏,玩家将进入两个表格中的任何一个,表格4和表格6(一个是获胜的祝贺表格,另一个是失败的嘲笑/失败表格)在表格4和表格6中,都有一个标签,显示玩家从上一个表格2中获得的分数 我在表格2中放置了一个返回分数值的方法 public int getScore() { return score; } 然后在两种形式中,表格4和表格6,每种形式中都有这些代码 表格4 privat
public int getScore()
{
return score;
}
然后在两种形式中,表格4和表格6,每种形式中都有这些代码
表格4
private void Form4_Load(object sender, EventArgs e)
{
Form2 game = new Form2();
lblFinalScore.Text += game.getScore().ToString();
}
表格6
private void Form6_Load(object sender, EventArgs e)
{
Form2 game = new Form2();
lblFinalScore.Text += game.getScore().ToString();
}
所以在通过Form2并玩游戏之后,例如,当我赢得游戏并得到7分,Form4出现时,lblFinalScore显示0。。。为什么?
请帮助…如果使用new关键字,则创建Form2类的新实例。 这样,您将使用两个不同的实例。不同的实例具有不同值的数据字段 如果要从类的任何入口访问相同的数据字段,请使用static关键字。您可以将分数值存储在静态字段中,这样您就可以轻松访问它 如果在类中定义了静态字段,则可以从任何实例访问该字段。但是,不鼓励使用静态字段,因为这违反了基本的OO原则 例如:
class Program
{
static void Main(string[] args)
{
ExampleClass ex1 = new ExampleClass();
ExampleClass ex2 = new ExampleClass();
ex1.normalfield = "new value for ex1";
ex2.normalfield = "new value for ex2";
ExampleClass.staticfield = "static value";
Console.WriteLine(ex1.normalfield);
Console.WriteLine(ex2.normalfield);
Console.WriteLine(ExampleClass.staticfield);
}
class ExampleClass
{
public string normalfield = "";
public static string staticfield = "";
}
}
在您的情况下,传递表单的原始实例可能是更好的方法。
这可以通过存储对表单的引用或实现Singleton模式来实现
然而,在我看来,最好的解决方案是解耦游戏逻辑的表示。您应该使用不同的类来实现游戏逻辑并存储连接到游戏的数据值,表单类只负责直观地显示表示游戏状态的对象的当前状态。您正在创建两个不同的Form2
实例。参考表格2的实际原始实例
在Form4
和Form6
上都有类级别变量,并从各自的构造函数中设置它。从Form2传递实例
请参阅。因为您正在创建两个不同的
Form2
@RohitVats实例,那么我应该怎么做?将实际的Form2
实例传递给其他表单,并使用它。