布尔本身设置为false

时间:2019-12-19 19:08:13

标签: c#

我的问题是bool rememberMe自动将其值设置为false,我不知道为什么

public partial class Example1 : Form
{
    public Example1()
    {
        InitializeComponent();
    }

    public bool rememberMe;

    public void TryLogin()
    {
        if (checkboxRememberMe.Checked)
        rememberMe = true;
        else
        rememberMe = false;
        var e2 = new Example2();
    }

    public bool CheckRememberMe()
    {
        if (rememberMe == true)
            return true;
        else
            return false;
    }
}

public partial class Example2 : Form
{
    public Example2()
    {
        InitializeComponent();

        var lf = new Example1();
        if (lf.CheckRememberMe() == true)
            // ...
        else
            // ...
    }
}

如您所见,这是Windows Forms App。首先是TryLogin()方法,它将rememberMe设置为true。然后,public Example2()运行。问题在于脚本的这一部分

var lf = new LoginForm();
if (lf.CheckRememberMe() == true)
    // ...
else
    // ...

显示lf.CheckRememberMe()等于false。有什么问题,我该如何解决?

1 个答案:

答案 0 :(得分:1)

    var lf = new LoginForm();

这将创建一个 LoginForm-这样就不会进行其他登录表单所做的更改。

您将必须传递变量,或使其变为静态。

尝试将构造函数更改为:

public Example2(bool rememberMe){
    this.rememberMe = rememberMe;
    InitializeComponent();
}

然后通过它:

var e2 = new Example2(rememberMe);

或者您可以(但可能不应该)将其更改为静态变量:

public static bool rememberMe;

并按类名引用:

if (Example1.rememberMe == true)

如果您只是想使其快速运行-但请继续阅读面向对象的基础知识