首页 > 解决方案 > 无状态声明

问题描述

您好,我有简单的代码,想要一键控制标签:

private void button1_Click(object sender, EventArgs e)
{            
    bool T=true;

    if (T)
    {
        label1.Text = "GOOD";
        T=false;
    }
    else if(!T){
        label1.Text = "BAD";
        T=true;
    }
}

问题是,每次我按下按钮时,它都声明为 true,并且每次都是 true 条件。我不能这样声明

bool T;

因为收到错误:

CS0165 使用未分配的局部变量“T”WindowsFormsApp1

我怎样才能声明一次?

标签: c#buttontriggersdeclaration

解决方案


当您想在某些 cklicked 状态和未点击状态之间切换时,您需要class中的成员,而不是仅存在于方法中的变量:

class MyClass
{
    bool foo;

    private void button1_Click(object sender, EventArgs e)
    {            
        if (this.foo)
        {
            label1.Text = "GOOD";
            this.foo=false;
        }
        else
        {
            label1.Text = "BAD";
            this.foo = true;
        }
    }
}

另请注意,我省略了 ,else if因为 bool 只能有两种状态:truefalse. 第三种情况是没有办法的。因此,与第一个条件匹配的所有内容都会自动匹配第二个条件,您无需(再次)测试布尔值。


推荐阅读