2009-12-24 76 views
5

我有一個網頁,其中有一些默認值的文本框。清除ASP.NET中的文本框

我必須清除文本框中的值。我有2個選項

1. textbox.text=""; 
2. textbox.text.remove(0,length); 

在這裏,我想知道我應該使用哪一個。它是否對頁面性能產生任何影響,因爲頁面中放置了許多文本框。

感謝

回答

20

要做到這一點,最好的辦法..

textbox.text = string.Empty; 

還記得string類型是不可改變 !

+0

非常感謝你, 它使的是一個不可改變 – 2009-12-24 10:49:02

+2

不變性你的情況不影響多大任何影響。但是不變性影響很大。賦值時的不可變對象通過重新創建而不復制。 – 2009-12-24 10:59:05

+0

+1爲不可變。 – 2009-12-24 14:24:45

7

這沒有什麼區別 - 做什麼是最可讀的爲您和您的同事們。

很多人喜歡用string.Empty

+0

方法調用與分配具有相同的性能嗎? – 2009-12-24 10:34:22

+2

@約翰請 - 我們都知道這是無足輕重的。 – 2009-12-24 10:35:05

+0

@Rex:也許現在對我來說太早了,但你是什麼意思? – 2009-12-24 10:36:27

1

大概,你的意思是當用戶點擊int框時用javascript清除值?如果是這樣,這對性能沒有任何影響。

我使用jQuery在大多數的網頁,所以我只是掛鉤這個函數來清除默認值的onClick,使用文本框的客戶端Id:

$('#ctl00_TextBox').click(function() { $('#ctl00_TextBox').val(''); 

如果你的意思是清楚它在代碼隱藏使用:

yourTextBox.Text = String.Empty; 
0

對性能的影響將是最小的,甚至有數百/數以千計的電話,不過

textbox.text = ""; 

在理論上應該非常稍快,因爲你只是分配一個新的值,而不是處理字符串(如卸下襬臂一樣)

要做到這一點是做的最好辦法

textbox.text = String.Empty; 

更新:如果你計數時鐘週期,會的String.Empty實際執行也更快,因爲它沒有創建新的對象,而「」將創建一個新的String對象。

但是,您真的不應該太在意這一點,沒有太多方法將字符串設置爲空,這會導致性能問題!您應該使用哪個是最可讀的...

+0

爲什麼string.Empty比「」更好? 「」是interned,與string.Emtpy相同。 Object.ReferenceEquals(string.Empty,「」)將返回true。 – helium 2009-12-24 10:48:44

+0

你答案的第一位是正確的,但我不太確定其餘部分。也許只是堅持你確定的東西? – 2009-12-24 10:51:48

+0

是的,它可能是實習生,但布拉德亞當斯暗示這不一定是這種情況... http://blogs.msdn.com/brada/archive/2003/04/22/49997.aspx所以String.Empty更安全如果我們真的經過這些微不足道的優化。也許編譯器/可以/應該優化這個?我還沒有看IL檢查... – 2009-12-24 13:22:27

2
  1. 兩個選項之間的性能差異將是太小,無法衡量,最有可能的。
  2. TextBox.Text = String.Empty;是很多更具有可讀性。它清楚地說明你要做什麼:「將此文本框的文本屬性設置爲空字符串」。

我建議你去做這項工作,因爲它既快又明瞭。

1
textbox.text=""; 

foreach (var item in Page.Controls) 
    { 
     if (item is TextBox) 
     { 
      ((TextBox)item).Text = ""; 
     } 
    }