将空Textbox.Text读为“”,null或String.Empty?

时间:2014-03-04 03:03:18

标签: c# null string

当涉及到表单上的文本框时,这总是让我感到困惑。我知道string可以是nullString.Empty,但是文字框可以吗?

根据我的理解,一旦创建控件,它就会自动包含“text”(我使用引号,因为虽然字段中可能没有文本,但字段存在)。

因此,如果创建了文本框,TextBox.Text == nullTextBox.Text == String.Empty为假?

或者那不是真的,因为TextBox.Textstring相同?

3 个答案:

答案 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属性可以是nullString.Empty

你可以这样想:

 public class TextBox :  Control 
 {
      public string Text {get; set;}
      // other properties ...
 }