2

我设置了 2 个表格。在第一种形式中,我有以下代码。

frm_BL addBranch = new frm_BL();

do
{
    addBranch.ShowDialog();
    if (addBranch.txtAmount.Text == "")
    {
        break;
    }

} while (true);

在主窗体中。就在第二种形式中。

private void btnAccept_Click(object sender, EventArgs e)
{
    this.Close();
}

但是我发现如果我将主窗体的代码更改为:

 if (addBranch.txtAmount.Text == null) //changed to null

第二种形式不断弹出。但如果它停留在

if (addBranch.txtAmount.Text == "") 

它关闭表单。有人可以解释为什么会这样吗?

4

6 回答 6

5

null 和空字符串是两个不同的东西,如果你想处理这两种情况,你可以使用 String.IsNullOrEmpty

null 表示对您所拥有的字符串的引用不存在(您没有指向任何内容)

空字符串意味着您对不包含任何内容的字符串的引用(例如,指向空字符数组的指针)。

于 2012-04-04T04:43:02.197 回答
5

最好的方法是:

if (String.IsNullOrEmpty(addBranch.txtAmount.Text))

txtAmount.Text属性是string包含文本框内容的。如果文本框为空,则它是一个零长度字符串。

检查是否相等null是说“如果文本框没有字符串......”,这将永远是错误的。检查的正确条件是“如果文本框的字符串为空......”。

使用该IsNullOrEmpty方法检查这两种情况。在这种情况下,字符串永远不应该为空,但检查一下也无妨。

请注意,这""是一个空字符串(相当于String.Empty),而null表示该字符串不存在。

于 2012-04-04T04:47:57.297 回答
2

Anull String与空的不同String。改为使用String.Empty()

于 2012-04-04T04:42:49.733 回答
0

除了已经正确的答案之外,我还会将 Trim() 添加到检查中,因为在大多数情况下,仅包含空格的字符串是不被接受的,尤其是对于 TextBox 输入。

if (string.IsNullOrEmpty(addBranch.txtAmount.Text.Trim())) 
于 2012-04-04T06:47:21.030 回答
0

txtAmount.Text 永远不会返回 null 无论您编写代码(在 c# 中和每个有效的(非 null)TextBox 中)。

TextBox.Text 返回一个空字符串或非空字符串。

于 2012-04-04T06:18:21.783 回答
0

我会查看定义以获取更多信息:

null 关键字是表示空引用的文字,它不引用任何对象。null 是引用类型变量的默认值。普通值类型不能为空。但是,C# 2.0 引入了可为空的值类型。

http://msdn.microsoft.com/en-us/library/edakx9da.aspx

此字段 (String.Empty) 的值是零长度字符串“”。在应用程序代码中,此字段最常用于将字符串变量初始化为空字符串的赋值。

http://msdn.microsoft.com/en-us/library/system.string.empty.aspx

我们看到的另一件事是“要测试字符串的值是 Nothing 还是 String.Empty,请使用 IsNullOrEmpty 方法。”

因此,当某事物是时,null它表示对空的引用(最常见的是它引用 0),而当字符串包含空值时,这意味着该字符串为空,但它包含对有效内存的引用。

于 2012-04-04T04:49:54.457 回答