繁体   English   中英

布尔值本身设置为 false

[英]Boolean sets to false by itself

我的问题是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 窗体应用程序。 第一个是TryLogin()方法,它将rememberMe设置为true 然后, public Example2()运行。 问题是在这部分脚本中

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

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

    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)

如果你只是想让它快速工作 - 但是然后阅读面向对象的基础知识

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM