繁体   English   中英

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

[英]Reading an empty Textbox.Text as “ ”, null or String.Empty?

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

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

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

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

来自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属性可以为nullString.Empty

你可以这样想:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM