在尝试设置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无效。
提前致谢
答案 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
表示它不存在