无状态声明

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


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


我怎样才能声明一次?


天涯尽头无女友
浏览 113回答 2
2回答

摇曳的蔷薇

当您想在某些 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 只能有两种状态:true或false. 第三种情况是没有办法的。因此,与第一个条件不匹配的所有内容都会自动匹配第二个条件,您无需(再次)测试布尔值。

扬帆大鱼

如果你想将label1.Textfrom切换GOOD到BAD你可以尝试一个简单的 turnary 运算符:private void button1_Click(object sender, EventArgs e){                label1.Text = string.Equals("GOOD", label1.Text, StringComparison.OrdinalIgnoreCase)      ? "BAD"      : "GOOD";}如果您想要更详细的解决方案,让我们提取一个属性,例如:public bool IsGood {  get {    // Simplest implementation; often adding a backing field is a good idea    return label1.Text = string      .Equals("GOOD", label1.Text, StringComparison.OrdinalIgnoreCase);  }  set {    label1.Text = value ? "GOOD" : "BAD";  }}然后点击事件 private void button1_Click(object sender, EventArgs e) {   IsGood = !IsGood;  } 
打开App,查看更多内容
随时随地看视频慕课网APP