("")和(null)之间有什么区别

10 c# winforms

在尝试设置Validations时,我最初在检查文本框是否为null时遇到了一些问题,我尝试使用

    private void btnGo_Click(object sender, EventArgs e)
    {
        string name = textLogin.Text;
        if (name == null)
        {
             labelError.Visiblle = true;
             labelError.Text = "Field Cannot be Left Blank"
        }
    }
Run Code Online (Sandbox Code Playgroud)

但它没有用,直到我试了这个

    private void btnGo_Click(object sender, EventArgs e)
    {
        string name = textLogin.Text;
        if (name == "")
        {
             labelError.Visiblle = true;
             labelError.Text = "Field Cannot be Left Blank"
        }
    }
Run Code Online (Sandbox Code Playgroud)

我的问题是我想知道("")和(null)之间的区别以及为什么null不起作用.

提前致谢

Ry-*_*Ry- 15

0和数组之间的区别相同:一切.他们是不同的价值观.""是一个空字符串,这是一个空白文本框,因为文本是全部.null没有价值,也不是空白文本框的含义Text.


p.s*_*w.g 5

System.String.NET中的数据类型是一个,一个引用类型.因此,空字符串(""string.Empty)是对长度为零的值的引用,null而不引用实际值,因此任何尝试访问它引用的值都将失败.

例如:

string emptyString = "";
string nullString = null;

Console.WriteLine(emptyString.Length); // 0
Console.WriteLine(nullString.Length);  // Exception!
Run Code Online (Sandbox Code Playgroud)

我建议您在验证代码中使用IsNullOrEmpty(或IsNullOrWhiteSpace)来处理这两种情况:

if (string.IsNullOrEmpty(name))
{
     labelError.Visiblle = true;
     labelError.Text = "Field Cannot be Left Blank"
}
Run Code Online (Sandbox Code Playgroud)


J M*_*Max 5

""是一个空字符串 vsnull这意味着“不存在”。

在您的情况下,您首先name将“不存在”进行比较,这是错误的,因为name确实存在。然后您与name空字符串进行比较,这是真的,因为它具有空字符串的值。