当涉及到表单上的文本框时,这总是让我感到困惑。我知道string
可以是null
或String.Empty
,但是文字框可以吗?
根据我的理解,一旦创建控件,它就会自动包含“text”(我使用引号,因为虽然字段中可能没有文本,但字段存在)。
因此,如果创建了文本框,TextBox.Text == null
和TextBox.Text == String.Empty
为假?
或者那不是真的,因为TextBox.Text
与string
相同?
答案 0 :(得分:7)
来自TextBox.Text文档
包含文本框文本内容的字符串。默认是 一个空字符串(“”)。
因此,如果创建了文本框,TextBox.Text
不是null
,则为String.Empty
您无法为控件文本设置null
值,Text属性的setter实现如下,根据实现null
将转换为empty
< / p>
set
{
if (value == null)
value = "";
if (value == this.Text)
return;
.....
答案 1 :(得分:1)
我试过了:
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
。
答案 2 :(得分:0)
TextBox
是一个类,与其他类似,它有一个名为Text
的属性,类型为string
。
因此Text
属性可以是null
或String.Empty
。
你可以这样想:
public class TextBox : Control
{
public string Text {get; set;}
// other properties ...
}