C#字符串-为什么null会给我一个不同的结果,而不是“”&”;

本文关键字:结果 一个 null 为什么 字符串 | 更新日期: 2023-09-27 18:29:51

我设置了两个表单。在第一个表单中,我有以下代码。

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 == "") 

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

C#字符串-为什么null会给我一个不同的结果,而不是“”&”;

最好的方法是:

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

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

null检查是否相等表示"如果文本框没有字符串…",这将始终为false。要检查的正确条件是"如果文本框的字符串为空…"。

使用IsNullOrEmpty方法检查这两种情况。在这种情况下,字符串永远不应该为null,但检查一下也没什么坏处。

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

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

null表示对您拥有的字符串的引用不存在(您什么都没有指向)

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

null String不同于空的String。请改用String.Empty()

我会查看定义以了解更多信息:

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

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),而当字符串包含null值时,这意味着该字符串是空的,但它包含对有效内存的引用。

txtAmount.Text在编写任何代码时都不会返回null(在c#中,对于每个有效(非null)的TextBox)。

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

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

if (string.IsNullOrEmpty(addBranch.txtAmount.Text.Trim()))