[英]Reading an empty Textbox.Text as “ ”, null or String.Empty?
当涉及到表单上的文本框时,这总是让我感到困惑。 我知道一个string
可以是null
或String.Empty
,但可以是一个文本框吗?
根据我的理解,一旦创建控件,它就会自动包含“文本”(我使用引号,因为虽然字段中可能没有文本,但字段存在)。
因此,如果创建文本框, TextBox.Text == null
和TextBox.Text == String.Empty
是假的?
或者这不是真的,因为TextBox.Text
与string
相同?
来自TextBox.Text文档
包含文本框文本内容的字符串。 默认值为空字符串(“”)。
因此,如果创建文本框, TextBox.Text
不为null
,则为String.Empty
您不能为控件文本设置null
值,Text属性的setter实现如下,按照实现null
将转换为empty
set
{
if (value == null)
value = "";
if (value == this.Text)
return;
.....
我试过了:
public partial class MainWindow {
public MainWindow() {
InitializeComponent();
Console.WriteLine("Text is empty:{0}", TextBox1.Text == string.Empty);
Console.WriteLine("Text is null:{0}", TextBox1.Text == null);
Console.WriteLine();
Console.WriteLine("TextBox.Text = null")
TextBox1.Text = null;
Console.WriteLine("Text is empty:{0}", TextBox1.Text == string.Empty);
Console.WriteLine("Text is null:{0}", TextBox1.Text == null);
}
}
我得到了:
Text is empty:True
Text is null:False
TextBox.Text = null
Text is empty:True
Text is null:False
所以我猜TextBox.Text将null
转换为String.Empty
。
TextBox
是一个类,与其他类似,它有一个名为Text
的属性,类型为string
。
因此Text
属性可以为null
或String.Empty
。
你可以这样想:
public class TextBox : Control
{
public string Text {get; set;}
// other properties ...
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.