12

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

    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 不起作用。

提前致谢

4

9 回答 9

20

0和空数组的区别一样:一切。他们是不同的价值观。""是一个空字符串,这就是一个空白文本框所包含的所有内容。null没有价值,也不是空白文本框所具有的Text.

于 2013-06-30T02:27:50.647 回答
6

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

例如:

string emptyString = "";
string nullString = null;

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

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

if (string.IsNullOrEmpty(name))
{
     labelError.Visiblle = true;
     labelError.Text = "Field Cannot be Left Blank"
}
于 2013-06-30T02:29:32.277 回答
5

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

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

于 2013-06-30T02:30:43.410 回答
3

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

于 2013-06-30T02:31:42.670 回答
2

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

""另一方面表示一个空字符串,这意味着文本框的文本中没有任何内容。ietextLogin.Text里面不包含任何字符。

于 2013-06-30T02:28:45.427 回答
2

通俗地说,null意思是缺少值和""意思是零长度的字符串,这不是一回事。可能有一些软件将null字符串和""eg 同等对待Console.WriteLine,但它仍然不能使它们成为同一件事。

严格来说,"" == null表达是false设计出来的。.NET 框架中类型的相等比较String通过==运算符重载来工作,它不null视为等于""

于 2013-07-19T17:49:20.803 回答
1

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

于 2013-06-30T02:31:05.237 回答
1

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

于 2013-06-30T02:39:17.433 回答
1

区别在于这""意味着和空字符串,但null意味着它不存在

于 2013-07-19T17:18:08.107 回答