2009-12-24 16 views
5

Ho una pagina Web in cui è presente una casella di testo con un valore predefinito.Cancellazione di un controllo TextBox in ASP.NET

Devo cancellare il valore dalla casella di testo. Ho 2 opzioni

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

Qui mi piacerebbe sapere quale devo usare. Ha un impatto sulle prestazioni della pagina perché ci sono molte caselle di testo nella pagina.

Grazie

risposta

20

Il modo migliore per farlo è ..

textbox.text = string.Empty; 

Ricorda inoltre che tipo di stringa è immutabile!

+0

La ringrazio molto, Se la soluzione sia l'impatto di essere immutabile –

+2

immutabilità non influisce molto nel vostro caso. Ma Sì, l'immutabilità ha un grande impatto. Oggetti immutabili su incarico vengono replicati per ricreazione e non copiati. –

+0

+1 per immutabile. –

7

Non fa alcuna differenza: fare ciò che è più leggibile per voi e i vostri colleghi.

Molti preferiscono utilizzare string.Empty.

+0

Una chiamata al metodo ha le stesse prestazioni dell'assegnazione? –

+2

@ John per favore - entrambi sappiamo che questo è oltre ogni banale. –

+0

@Rex: forse è troppo presto per me, ma cosa intendi? –

1

Presumibilmente, vuoi dire cancellare il valore con javascript quando un utente fa clic sulla casella? Se è così, non farà alcuna differenza per le prestazioni.

Io uso jQuery nella maggior parte delle pagine, quindi ho solo collego questa funzione per cancellare i valori di default onClick, utilizzando il ClientId della casella di testo:

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

Se vuoi dire chiaro in codebehind utilizzare questo:

yourTextBox.Text = String.Empty; 
0

L'impatto sulle prestazioni sarà minimo, anche con centinaia/migliaia di chiamate, tuttavia

textbox.text = ""; 

dovrebbe in teoria essere leggermente più veloce, dal momento che si sta solo assegnando un nuovo valore, piuttosto che l'elaborazione della stringa (come fa .Rimuovere)

Il modo migliore per farlo sarebbe quello di fare

textbox.text = String.Empty; 

Aggiornamento: se si contano i cicli di clock, String.Empty verrà effettivamente eseguito più velocemente, perché non crea un nuovo oggetto, mentre "" creerà un nuovo oggetto String.

Tuttavia, non dovresti preoccuparti troppo di questo, non ci sono molti modi per impostare una stringa da svuotare che causerà problemi di prestazioni! Si dovrebbe usare qualunque sia il più leggibile ...

+0

Perché string.Empty è meglio di ""? "" è internato ed è identico a string.Emtpy. Object.ReferenceEquals (string.Empty, "") restituirà true. – helium

+0

Il primo bit della tua risposta è corretto, ma non sono troppo sicuro del resto. Forse stai solo con quello di cui sei sicuro? –

+0

Sì, potrebbe essere internato, ma Brad Adams implica che questo non è necessariamente il caso ... http://blogs.msdn.com/brada/archive/2003/04/22/49997.aspx So String.Empty è più sicuro se siamo davvero alla ricerca di queste minuscole ottimizzazioni. Forse il compilatore fa/potrebbe/dovrebbe ottimizzare questo? Non ho guardato l'IL per controllare ... –

2
  1. La differenza di prestazioni tra le due opzioni sarà troppo piccola per misurare, molto probabilmente.
  2. TextBox.Text = String.Empty; è molto più leggibile. Indica chiaramente cosa stai cercando di fare: "imposta la proprietà text di questa casella di testo su una stringa vuota".

Vi consiglio di andare con il compito, poiché è sia più veloce che molto più chiaro.

1
textbox.text=""; 

o

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