在具有更大范围的方法中实例化类

本文关键字:方法 实例化 范围 | 更新日期: 2023-09-27 18:36:56

所以我正在做一个小的ESL炸弹游戏,但我想做一组更有效的代码。截至目前,我有这个:

 public partial class Form2 : Form
{
    string pinNumber;
    Bomb bombA = new Bomb("A", 1, "A", 1, "A", "B", "C", "D", "Sentence");
    int progress;
    int wireChoice;
    string ansChoice;
    int timer = 600;
    public Form2()
    {
        InitializeComponent();
        timer1.Start();
        Random _bombType = new Random();
        int bombType = 1;
        if (bombType == 1)
        {
            genBomb();
        }
        else
        {
        }
    }
    public void genBomb()
    {
        bombA.Pin = 6259;
        bombA.Serial = "G6P4LN";
        bombA.Wire = 2;
        bombA.Code = "to rearrange";
        bombA.Choice1 = "rearrange";
        bombA.Choice2 = "to rearrange";
        bombA.Choice3 = "rearranged";
        bombA.Choice4 = "rearranging";
        bombA.Question = "I purchased so many new outfits that I need ______ my closet.";
        uiUpdate();
    }
public void uiUpdate()
    {
        serialLbl.Text = bombA.Serial;
        puzzleLbl.Text = bombA.Question;
        ans1.Text = bombA.Choice1;
        ans2.Text = bombA.Choice2;
        ans3.Text = bombA.Choice3;
        ans4.Text = bombA.Choice4;
        timerLbl.Text = timer.ToString();
    }

我有一个单独的带有公共变量的 Bomb 类公共类文件。但是,我必须在 Form2 字段中实例化 bombA,并在方法 genBomb() 中重新定义其变量值。

我想在该方法中创建 bombA,但这样做会导致引用 bombA.Variable 的其他方法不起作用,因为它们在该上下文中不再存在。

我怎样才能做到这一点?

在具有更大范围的方法中实例化类

范围是在声明变量或成员时定义的,不一定是在创建对象时定义的。您可以声明字段而不为其赋值:

Bomb bombA;

并在genBomb中初始化它:

public void genBomb()
{
    bombA = new Bomb("A", 1, "A", 1, "A", "B", "C", "D", "Sentence");
    bombA.Pin = 6259;
    ....

请注意,您需要在 uiUpdate 中检查 null 值,因为没有什么可以阻止它在 genBomb 之前被调用。