文本框的文本属性甚至可能为空吗?
本文关键字:文本 属性 | 更新日期: 2023-09-27 18:31:44
我遇到了这段代码:
if (txtUPC.Text.ToString() != null)
。并想知道这个测试是否有效 - text 属性是否有可能为 null?txtUPC 不是动态创建的控件。当然,它可以是空的,也可以只包含空格,但空?如果是这样,我想知道怎么做。再说一次,在文本属性上调用 ToString() 似乎也像穿吊带带一样。
更新
所以在我看来,对我来说(记住:.NET 1.1,Windows CE/Compact Framework),这个:
if (txtUPC.Text.Trim() != string.Empty)
。是比这更好的测试:
if (txtUPC.Text.ToString() != null)
然而,在更专注地注视这段代码时,似乎外部或内部手套都是多余的/不必要的,无论如何。请注意该方法包括的两个 shibbeleth-发音检查器:
if (txtUPC.Text.ToString() != null)
{
if (txtUPC.Text.Length > 0)
{
. . .
else
{
MessageBox.Show("Please enter a value in the item field");
txtUPC.Focus();
}
}
else
{
MessageBox.Show("Please enter a value in the item field");
txtUPC.Focus();
}
. . .
似乎一个看门人/手套就足够了 - 要么这样检查:
if (txtUPC.Text.Trim() != string.Empty)
。或者这样:
if (txtUPC.Text.Trim().Length > 0)
一个?
我认为它永远不会为空(也许winforms/asp.net/wpf文本框之间存在差异,但我不这么认为)。虽然更好的检查是:
if (String.IsNullOrEmpty(txtUPC.Text) { ... }
或者,根据您的要求:
if (String.IsNullOrWhiteSpace(txtUPC.Text) { ... }
是的,不需要.ToString()
。
我在该代码中看到的问题是.ToString()
将对象作为字符串返回。 如果在这种情况下,对象是一个字符串,它只返回原始字符串(完全原样)
问题是如果.Text
为空,则.ToString()
的方法调用将抛出NullReferenceException
。
您可以在此处查看有关.ToString
覆盖的更多信息
有关示例,请参阅此代码:
String str1 = "";
String str2 = null;
Console.WriteLine("Original str1: {0}", str1);
Console.WriteLine("Original str2: {0}", str2);
Console.WriteLine("ToString str1: {0}", str1.ToString());
Console.WriteLine("ToString str2: {0}", str2.ToString());
将在ToString str2
行上引发异常