Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# (“空”)和(空)之间有什么区别_C#_Winforms - Fatal编程技术网

C# (“空”)和(空)之间有什么区别

C# (“空”)和(空)之间有什么区别,c#,winforms,C#,Winforms,在尝试设置验证时,我最初在检查文本框是否为空时遇到了一些问题,我尝试使用 private void btnGo_Click(object sender, EventArgs e) { string name = textLogin.Text; if (name == null) { labelError.Visiblle = true; labelError.Text = "Fie

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

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


提前感谢

正如
0
和空数组之间的区别一样:一切。它们是不同的价值观<代码>“是一个空字符串,这就是一个空白文本框所包含的内容,因为文本就是全部
null
没有值,也不是空白文本框的值,因为
Text

null
仅仅意味着对象(在本例中,
textLogin.Text
对象)不存在。为此,textLogin对象不能存在。因此,在本例中,
textLogin
对象不为null,因此,
textLogin.Text
不能为null


另一方面,表示空字符串,表示文本框的文本中没有任何内容。i、 e.
textLogin.Text
中不包含任何字符。

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

例如:

string emptyString = "";
string nullString = null;

Console.WriteLine(emptyString.Length); // 0
Console.WriteLine(nullString.Length);  // Exception!
我建议您在验证代码中使用(或)来处理这两种情况:

if (string.IsNullOrEmpty(name))
{
     labelError.Visiblle = true;
     labelError.Text = "Field Cannot be Left Blank"
}
是一个空字符串,而
null
表示“不存在”


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

您可以使用
IsNullOrWhiteSpace
进行文本框输入验证。它检查null、空字符串或空白(制表符、空格等)。
文本框的默认值。文本
字符串。空
非空。所以你的第一个代码不起作用
null
只是表示对象没有指向任何东西,它没有分配任何内存。

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

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

用外行的话说,
null
表示没有值,
表示长度为零的字符串,这不是一回事。可能有一些软件将
null
字符串和
等同对待,例如
Console.WriteLine
,但它仍然不能使它们成为相同的东西


严格地说,
“”==null
表达式是设计的
false
。NET framework中
字符串
类型的相等性比较是通过,它不会将
null
视为等于

是你的朋友,因为出于验证的目的,想要对他们一视同仁是很常见的。”“意思是空杯子。空意味着什么前者是空的,后者是空的,不是吗?就像,空虚本身并不存在多谢澄清