差异:在textbox =“”和Null之间

时间:2012-02-24 12:50:12

标签: .net

之间有什么区别
TextBox1.Text = null;

TextBox1.Text = "";

清除或取消文本框,但是有什么特别的区别吗?

3 个答案:

答案 0 :(得分:4)

假设您正在引用 WinForms ,这是来自System.Windows.Forms.Control的ILSpy的摘录:

public virtual string Text
{
    get
    {
        // ...
    }
    set
    {
        if (value == null)
        {
            value = "";
        }

        // ...
    }
}

正如您所看到的,通过nullstring.Empty都会导致string.Empty分配给控件。

如果您引用ASP.NET( WebForms ),同样适用,您可以从System.Web.UI.WebControls.TextBox的摘录中看到:

public virtual string Text
{
    get
    {
        string text = (string)this.ViewState["Text"];
        if (text != null)
        {
            return text;
        }
        return string.Empty;
    }
    set
    {
        this.ViewState["Text"] = value;
    }
}

此处,在get部分,它还会为string.Empty值返回null

我的结论是因为TextBox控件的日常使用存在没有实际的差异。

答案 1 :(得分:0)

假设您指的是ASP.NET Web窗体:

""是一个实际的字符串,长度为0。

null表示字符串变量指向任何内容。因此不会产生价值。

当TextBox呈现为HTML时,没有区别。

答案 2 :(得分:0)

TextBox1.Text是TextBox类中可用的属性,其中在分配值之前添加了setter null check。下面的代码更简单。

string txt= string.Empty;



 public string Text
    {
        get {
            return txt;
        }
        set
        {
            if (string.IsNullOrEmpty(value))
            {
                txt = string.Empty;
            }
            else
            {
                txt = value;
            }
        }
    }