C# 布尔值本身设置为false

C# 布尔值本身设置为false,c#,C#,我的问题是bool rememberMe会自动将其值设置为false,我不知道为什么 public partial class Example1 : Form { public Example1() { InitializeComponent(); } public bool rememberMe; public void TryLogin() { if (checkboxRememberMe.Checked)

我的问题是
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
。然后,运行
公共示例2()。问题是在脚本的这一部分

var lf = new LoginForm();
if (lf.CheckRememberMe() == true)
    // ...
else
    // ...
显示
lf.CheckRememberMe()
等于
false
。问题是什么?我该如何解决

    var lf = new LoginForm();
这将创建一个新的登录表单-因此它不会有其他登录表单所做的更改

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

尝试将构造函数更改为:

public Example2(bool rememberMe){
    this.rememberMe = rememberMe;
    InitializeComponent();
}
然后通过它:

var e2 = new Example2(rememberMe);
或者您可以(但可能不应该)将其更改为静态变量:

public static bool rememberMe;
并按类名引用:

if (Example1.rememberMe == true)

如果您只是想让它快速工作,那么请阅读面向对象的基础知识,这是因为您从未运行过
TryLogin
函数欢迎使用堆栈溢出。请学习如何使用堆栈溢出,并阅读如何提高问题的质量。然后,您的问题将包含您的完整源代码,这些源代码可以由其他人编译和测试。请将
Example1
Example2
重命名为有意义的类名。还有,什么是
LoginForm
,它实际上是
Example1
?@Fabjan我知道,但是我没有在这里写这个脚本,因为它太复杂了long@Progman是的,LoginForm实际上是示例1,很抱歉弄错了,我已经编辑过了,现在应该可以了哦,谢谢!使布尔静电工作!reaaaaaallyyyy谢谢你man@CodeBr3akerSon但是,一定要仔细阅读一下为什么这样做,因为这样做是不合适的可伸缩设计。当他说你可能不应该这样做时,你应该注意。将其设置为static意味着类的每个实例都将共享此变量。更改一个实例上的值将更改每个实例上的值
false
是布尔值的默认值。除非您将其设置为其他内容,否则它将是错误的。在检查是否
rememberMe==true
之前,可以调用
TryLogin
,或者将rememberMe设置为可为null的布尔值,这样它将为null,直到将其设置为true或false为止。将其设置为静态并不是一个好的选择。