【问题标题】:if statements in buttons c#按钮 c# 中的 if 语句
【发布时间】:2013-05-16 01:24:14
【问题描述】:

我是 Visual c# 中的一个全新的 n00bie,我遇到了一个让我发疯的奇怪障碍!这是有问题的代码(是的,一个 Hello World 程序):

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {


            if (textBox1.Text.Equals("Goodbye Cruel World"))
            {
                textBox1.Text = ("Hello World!");

            }
            else { textBox1.Text = ("Goodye Cruel World"); }


        }



    }
}

我也尝试过使用 textBox1.Text=="Goodbye Cruel World";作为 if 语句的评估参数,在编译器中没有错误(顺便说一下,我使用的是 Visual Studio 2012 Ultimate)

程序运行良好。我将文本框文本属性初始化为“Hello World!”使用 VS 的设计 GUI。我面临的问题是代码仅在用户第一次单击按钮时才有效。按钮后的任何时间都不会执行任何操作。

我调试了代码并确保文本框文本属性在用户第一次单击按钮时被适当地更改。当用户第二次单击按钮时(或此后的任何时间),一旦代码到达 if 语句,它就会跳过它,就好像其中表达式的评估是 FALSE。事实上,跟上调试工具的步伐,按钮只会继续执行 else 块中的代码,尽管我知道我正在使用的 TextBox.Text 属性之前已被适当地更改过。

我在这里错过了什么???为什么按钮不只是在我硬编码的两个字符串之间切换文本框文本值?

【问题讨论】:

  • 拼写错误。 '"Goodye Cruel World"' 你错过了b
  • 你的眼光太差了。
  • 这就是为什么您应该始终使用单个 private const string 字段来处理此类事情,而不是一遍又一遍地输入字符串。 :)
  • 谢谢大家=哇哇真快....如果我需要它,我一定会问其他事情....再次感谢大家!
  • @DanielHilgarth 你甚至可以说他缺了一个好眼力

标签: c# c#-4.0


【解决方案1】:

这是在代码中定义字符串常量的情况:

public partial class Form1 : Form
{
    private const string GOODBYE = "Goodbye Cruel World";
    private const string HELLO = "Hello World!";
    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        if (textBox1.Text.Equals(GOODBYE ))
        {
            textBox1.Text = HELLO;

        }
        else { textBox1.Text = (GOODBYE ); }
    }
}

如果您在多个地方使用相同的字符串,那么最好将其定义为 const 并在代码中的任何地方使用它,这将帮助您减少像现在这样的错误 (@ 987654323@ 是Goodbye) 也更容易更改/维护。

【讨论】:

  • +1。一个有趣的补充是他还需要使用 HELLO 来初始化他的按钮,而不是再次输入“Hello World!”。在 GUI 设计器工具中。
【解决方案2】:

检查 else 子句中 Goodye 的拼写。条件将始终为假。

【讨论】:

    【解决方案3】:

    您使用的是三个字符串,而不是两个。 《再见残酷世界》不等于《再见残酷世界》。因此,您不能指望此源代码有任何类型的“字符串交换”行为。

    学习经验:不要在代码的不同点使用相同的字符串。相反,创建一个具有该值的常量字符串变量,然后在每次需要时使用它。示例代码见Habib's answer

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-19
      • 2014-10-16
      • 1970-01-01
      • 1970-01-01
      • 2013-07-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多