2009-12-24 4 views
5

У меня есть веб-страница, где есть текстовое поле с некоторым значением по умолчанию.Очистка TextBox в ASP.NET

Мне нужно очистить значение от текстового поля. У меня есть 2 варианта

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

Здесь я хотел бы знать, какой из них я должен использовать. Это влияет на производительность страницы, поскольку на странице много текстовых полей.

Благодаря

ответ

20

Лучший способ сделать это ..

textbox.text = string.Empty; 

Также помните, что тип строка неизменны!

+0

Большое спасибо, Имеет ли какое-либо влияние, чтобы быть в непреложный –

+2

неизменность не влияет на многое в вашем случае. Но непреложность имеет большое влияние. Неизменяемые объекты при назначении копируются рекреацией и не копируются. –

+0

+1 для неизменяемых. –

7

Не имеет значения - сделайте то, что наиболее читаемо для вас и ваших коллег.

Многие предпочитают использовать string.Empty.

+0

Вызов метода имеет ту же производительность, что и присвоение? –

+2

@ Джон, пожалуйста, мы оба знаем, что это не так. –

+0

@Rex: может быть, для меня слишком рано утром, но что вы имеете в виду? –

1

Предположительно, вы имеете в виду очистить значение с помощью javascript, когда пользователь нажимает кнопку int в поле? Если это так, это не повлияет на производительность.

Я использую JQuery в большинстве страниц, так что я просто подключить эту функцию, чтобы очистить значения по умолчанию OnClick, используя ClientId текстового поля:

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

Если вы имеете в виду ясное это в коде использовать это:

yourTextBox.Text = String.Empty; 
0

влияние на производительность будет минимальным, даже с сотнями/тысячами звонков, однако

textbox.text = ""; 

в теории должно быть очень немного быстрее, так как вы просто назначая новое значение, а не обработки строки (как .Remove)

Лучший способ сделать это было бы сделать

textbox.text = String.Empty; 

Обновление: Если вы считаете тактовые циклы, String.Empty будет выполняться быстрее, потому что он не создает новый объект, тогда как «» создаст новый объект String.

Однако вы действительно не должны слишком беспокоиться об этом, но не так много способов установить строку в пустую, что вызовет проблемы с производительностью! Вы должны использовать то, что является наиболее читаемым ...

+0

Почему string.Empty лучше, чем ""? "" интернирован и идентичен string.Emtpy. Object.ReferenceEquals (string.Empty, "") вернет true. – helium

+0

Первый бит вашего ответа правильный, но я не слишком уверен в этом. Может быть, просто придерживайтесь того, что вы уверены? –

+0

Да, это может быть интернировано, но Брэд Адамс подразумевает, что это не обязательно так ... http://blogs.msdn.com/brada/archive/2003/04/22/49997.aspx Так String.Empty безопаснее если мы действительно после этих незначительных оптимизаций. Может быть, компилятор делает/может/должен оптимизировать это? Я не смотрел на IL, чтобы проверить ... –

2
  1. Разница в производительности между двумя вариантами будет слишком мала для измерения, скорее всего.
  2. TextBox.Text = String.Empty; является более читаемым. В нем четко указано, что вы пытаетесь сделать: «установите для текстового свойства этого текстового поля пустую строку».

Я рекомендую вам пойти с заданием, так как он работает быстрее и намного более ясно.

1
textbox.text=""; 

или

foreach (var item in Page.Controls) 
    { 
     if (item is TextBox) 
     { 
      ((TextBox)item).Text = ""; 
     } 
    } 
Смежные вопросы