为了账号安全,请及时绑定邮箱和手机立即绑定

无状态声明

无状态声明

C#
天涯尽头无女友 2022-10-23 15:58:04
您好,我有简单的代码,想要一键控制标签: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我怎样才能声明一次?
查看完整描述

2 回答

?
摇曳的蔷薇

TA贡献1793条经验 获得超6个赞

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


查看完整回答
反对 回复 2022-10-23
?
扬帆大鱼

TA贡献1799条经验 获得超9个赞

如果你想将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; 

 } 


查看完整回答
反对 回复 2022-10-23
  • 2 回答
  • 0 关注
  • 59 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信