(“”)和(null)之间有什么区别

时间:2013-06-30 02:25:55

标签: 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"
        }
    }

但是直到我尝试了这个

它才行
    private void btnGo_Click(object sender, EventArgs e)
    {
        string name = textLogin.Text;
        if (name == "")
        {
             labelError.Visiblle = true;
             labelError.Text = "Field Cannot be Left Blank"
        }
    }

我的问题是我想知道(“”)和(null)之间的区别以及为什么null无效。

提前致谢

9 个答案:

答案 0 :(得分:14)

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

答案 1 :(得分:5)

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

例如:

string emptyString = "";
string nullString = null;

Console.WriteLine(emptyString.Length); // 0
Console.WriteLine(nullString.Length);  // Exception!

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

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

答案 2 :(得分:4)

""是一个空字符串vs null,表示“不存在”。

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

答案 3 :(得分:2)

TextBox.Text的默认值为String.Empty""不为空。所以你的第一个代码不起作用。 null只是表示一个对象没有指向任何东西,它没有分配任何内存。

答案 4 :(得分:1)

null仅表示对象(在本例中为textLogin.Text对象)不存在。为了这种情况,textLogin对象不能存在。因此,textLogin对象在这种情况下不为空,因此textLogin.Text不能为空。

另一方面,

""表示空字符串,表示文本框的文本中没有任何内容。即textLogin.Text中不包含任何字符。

答案 5 :(得分:1)

在外行人的术语中,null表示缺少值,""表示零长度字符串,这不是一回事。某些软件可能会同等对待null字符串和"",例如Console.WriteLine,但它仍然不能使它们成为同一个东西。

严格来说,"" == null表达式是false的设计。 .NET框架中String类型的相等比较由== operator overloading起作用,它不会将null视为等于""

答案 6 :(得分:0)

您可以使用IsNullOrWhiteSpace进行文本框输入验证。它检查null,空字符串或空格(制表符,空格等)。 http://msdn.microsoft.com/en-us/library/system.string.isnullorwhitespace.aspx

答案 7 :(得分:0)

简单,""有一个有效值,即String.Empty,但null没有任何价值。

答案 8 :(得分:0)

区别在于""表示空字符串,但null表示它不存在