2009-12-24 16 views
5

Tengo una página web donde hay un cuadro de texto con algún valor predeterminado.Borrado de un cuadro de texto en ASP.NET

Tengo que borrar el valor del cuadro de texto. Tengo 2 opciones

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

Aquí me gustaría saber cuál debo usar. ¿Tiene algún impacto en el rendimiento de la página porque hay muchos cuadros de texto colocados en la página.

Gracias

Respuesta

20

La mejor manera de hacer esto es ..

textbox.text = string.Empty; 

Asimismo, recuerda que tipo de cadena es inmutable !

+0

Muchas gracias, ¿Sería otra impacto de ser inmutable –

+2

inmutabilidad no afecta mucho en su caso. Pero sí la inmutabilidad tiene un gran impacto. Los objetos inmutables después de la asignación se replican por recreación y no se copian. –

+0

+1 para inmutable. –

7

No hace la diferencia: haga lo que le resulte más fácil para usted y sus colegas.

Muchos prefieren usar string.Empty.

+0

¿Una llamada a método tiene el mismo rendimiento que la asignación? –

+2

@John por favor, ambos sabemos que esto es más que trivial. –

+0

@Rex: tal vez es demasiado temprano en la mañana para mí, pero ¿qué quieres decir? –

1

¿Presumiblemente, quiere decir borrar el valor con javascript cuando un usuario hace clic en el cuadro? Si es así, no hará ninguna diferencia en el rendimiento.

utilizo jQuery en la mayoría de las páginas, así que simplemente conectar esta función para borrar los valores por defecto onclick, utilizando el ClientId de la caja de texto:

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

Si usted quiere decir que claro en CodeBehind utilizar este:

yourTextBox.Text = String.Empty; 
0

El impacto en el rendimiento será mínimo incluso con cientos/miles de llamadas, sin embargo

textbox.text = ""; 

en teoría debería ser muy un poco más rápido, ya que sólo está asignando un nuevo valor en lugar de procesar la cadena (como lo hace .Remove)

La mejor manera de hacer esto sería hacer

textbox.text = String.Empty; 

Actualización: si está contando ciclos de reloj, String.Empty también se ejecutará más rápido, porque no crea un nuevo objeto, mientras que "" creará un nuevo objeto String.

Sin embargo, realmente no debería preocuparse demasiado por esto, ¡no hay muchas formas de configurar una cadena en vacío que pueda causar problemas de rendimiento! Debe usar el que sea más legible ...

+0

¿Por qué string.Empty es mejor que ""? "" está internado y es idéntico a la cadena.Emtpy. Object.ReferenceEquals (string.Empty, "") devolverá true. – helium

+0

La primera parte de tu respuesta es correcta, pero no estoy muy seguro del resto. ¿Tal vez te quedas con lo que estás seguro? –

+0

Sí, puede ser internado, pero Brad Adams implica que este no es necesariamente el caso ... http://blogs.msdn.com/brada/archive/2003/04/22/49997.aspx So String.Empty es más seguro si realmente queremos estas minúsculas optimizaciones. Quizás el compilador/debería/debería optimizar esto? No he visto IL para verificar ... –

2
  1. La diferencia de rendimiento entre las dos opciones será demasiado pequeña para medir, lo más probable.
  2. TextBox.Text = String.Empty; es mucho más legible. Indica claramente lo que intenta hacer: "establecer la propiedad de texto de este cuadro de texto en una cadena vacía".

Te recomiendo que vayas con la tarea, ya que es más rápida y mucho más clara.

1
textbox.text=""; 

o

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