C# 读取一个空文本框。文本为&引用;,空或字符串。是否为空?

C# 读取一个空文本框。文本为&引用;,空或字符串。是否为空?,c#,null,string,C#,Null,String,当涉及到表单上的文本框时,这总是让我感到困惑。我知道string可以是null或string.Empty,但是文本框可以吗 据我所知,一旦创建控件,它就会自动包含“文本”(我使用倒逗号,因为字段中可能没有文本,但字段存在) 因此,如果创建了文本框,TextBox.Text==null和TextBox.Text==String.Empty是否为false 或者这不是真的,因为TextBox.Text与文档中的string?相同 包含文本框的文本内容的字符串。默认值是 空字符串(“”) 因此,如果创

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

据我所知,一旦创建控件,它就会自动包含“文本”(我使用倒逗号,因为字段中可能没有文本,但字段存在)

因此,如果创建了文本框,
TextBox.Text==null
TextBox.Text==String.Empty
是否为false

或者这不是真的,因为
TextBox.Text
与文档中的
string

相同

包含文本框的文本内容的字符串。默认值是 空字符串(“”)

因此,如果创建了文本框,
TextBox.Text
不是
null
,而是
String.Empty

  set
  {
    if (value == null)
      value = "";
    if (value == this.Text)
      return;
    .....
您不能将
null
值设置为控制文本,文本属性的设置器实现如下,根据实现
null
将转换为
empty

  set
  {
    if (value == null)
      value = "";
    if (value == this.Text)
      return;
    .....

TextBox
是一个与其他类一样的类,它有一个名为
Text
的属性,类型为
string

因此
Text
属性可以是
null
String.Empty

你可以这样想:

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

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