按钮中的If语句
本文关键字:语句 If 按钮 | 更新日期: 2023-09-27 18:14:29
我是一个全新的visual c#新手,我遇到了一个奇怪的障碍,让我发疯!!下面是有问题的代码(是的,是一个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。文字=="再见,残酷的世界";作为if语句在编译器中没有错误的评估参数(顺便说一下,我使用Visual Studio 2012 Ultimate)
程序运行良好。我使用VS.的设计GUI将文本框文本属性初始化为"Hello World!",我面临的问题是代码仅在用户第一次单击按钮时有效。任何时间后的按钮做什么。
我调试了代码,并确保在用户第一次单击按钮时适当地更改了文本框文本属性。当代码到达if语句时,用户第二次单击按钮(或者在此之后的任何时间),它会跳过该按钮,就好像其中表达式的求值为FALSE一样。事实上,与调试工具保持一致,按钮只执行else块中的代码,尽管我知道TextBox。我正在使用的文本属性之前已被适当更改。
我在这里错过了什么?为什么按钮不只是在我硬编码的两个字符串之间切换文本框的文本值?
您使用了三个字符串,而不是两个。"good dye Cruel World"不等于"Goodbye Cruel World"。因此,你不能期望从这个源代码中有任何类型的"字符串交换"行为。
经验教训:不要在代码的不同位置使用相同的字符串。相反,创建一个具有该值的常量字符串变量,然后在每次需要时使用它。示例代码见Habib的回答
这是在代码中定义字符串常量的一种情况:
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
并在你的代码中到处使用它会更好,这将帮助你减少错误,就像你现在的(Goodye
是Goodbye
),它也更容易改变/维护。
检查else子句中Goodye的拼写。条件总是为假。