我对以下三种清除文本框内容的方法感到有点困惑.我正在使用WPF并发现All正在工作,但我无法找到差异.
有人可以用一些例子向我解释一下吗?
txtUserName.Clear();
txtUserName.Text = string.Empty;
txtUserName.Text = "";
syn*_*ned 25
如果不是真的很深:
清除:从TextBox中删除内容,可能会删除随其分配的资源
public void Clear()
{
using (this.TextSelectionInternal.DeclareChangeBlock())
{
this.TextContainer.DeleteContentInternal(this.TextContainer.Start, this.TextContainer.End);
this.TextSelectionInternal.Select(this.TextContainer.Start, this.TextContainer.Start);
}
}
Run Code Online (Sandbox Code Playgroud)
将空字符串(因为string.Empty和""相等)分配给Text属性只需将空字符串分配给附加属性TextBox.TextProperty:
public string Text
{
get
{
return (string) this.GetValue(TextBox.TextProperty);
}
set
{
this.SetValue(TextBox.TextProperty, (object) value);
}
}
Run Code Online (Sandbox Code Playgroud)
She*_*dan 19
该Clear()
方法不仅仅是删除文本TextBox
.它删除所有内容并重置文本选择和插入符号@ syned的答案很好地显示.
对于txtUserName.Text = "";
例如,框架将创建一个空的string
对象,如果不已经在字符串池中存在,并且将其设置为Text
属性.但是,如果""
已在应用程序中使用该字符串,则Framework将使用池中的此值.
对于该txtUserName.Text = string.Empty;
示例,Framework不会创建空string
对象,而是引用空字符串常量,并将其设置为Text
属性.
在性能测试中,已经显示(在In C#中,我应该使用string.Empty或String.Empty还是""? post)后两个示例之间确实没有任何有用的区别.调用Clear()
方法肯定是最慢的,但这显然是因为它还有其他工作要做以及清除文本.即便如此,三种选择之间的性能差异仍然几乎无法察觉.