2009-12-24 29 views
5

Tôi có trang web có hộp văn bản có một số giá trị mặc định.Xóa một TextBox trong ASP.NET

Tôi phải xóa giá trị khỏi hộp văn bản. Tôi có 2 tùy chọn

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

Ở đây tôi muốn biết tôi nên sử dụng cái nào. Nó có ảnh hưởng gì đến hiệu suất trang vì có nhiều hộp văn bản được đặt trong trang hay không.

Cảm ơn

Trả lời

20

Cách tốt nhất để làm điều này là ..

textbox.text = string.Empty; 

Cũng nên nhớ rằng kiểu chuỗi là bất biến!

+0

Thank you very much, Liệu nó thực hiện bất kỳ tác động trở thành một bất biến –

+2

Bất Biến không ảnh hưởng nhiều trong trường hợp của bạn. Nhưng có bất biến có tác động lớn. Các đối tượng bất biến khi gán được nhân rộng bằng cách giải trí và không được sao chép. –

+0

+1 cho bất biến. –

7

Không có gì khác biệt - làm những gì có thể đọc được nhiều nhất cho bạn và đồng nghiệp của bạn.

Nhiều người thích sử dụng string.Empty.

+0

Cuộc gọi phương thức có cùng hiệu suất với nhiệm vụ? –

+2

@ John xin vui lòng - cả hai chúng tôi biết điều này là ngoài tầm thường. –

+0

@Rex: có lẽ đã quá sớm vào buổi sáng cho tôi, nhưng ý của bạn là gì? –

1

Có lẽ, bạn có nghĩa là xóa giá trị bằng javascript khi người dùng nhấp vào hộp? Nếu vậy, nó sẽ không tạo ra bất kỳ sự khác biệt nào về hiệu suất.

tôi sử dụng jQuery trong hầu hết các trang, vì vậy tôi chỉ treo lên chức năng này để xóa giá trị mặc định onClick, sử dụng ClientId của hộp văn bản:

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

Nếu bạn có ý nghĩa rõ ràng nó trong codebehind sử dụng này:

yourTextBox.Text = String.Empty; 
0

Ảnh hưởng đến hiệu suất sẽ được tối thiểu ngay cả với hàng trăm/hàng ngàn cuộc gọi, tuy nhiên

textbox.text = ""; 

nên về mặt lý thuyết là rất hơi nhanh hơn, vì bạn chỉ cần gán một giá trị mới chứ không phải xử lý chuỗi (như lệnh .remove không)

Cách tốt nhất để làm điều này sẽ làm

textbox.text = String.Empty; 

Cập nhật: nếu bạn đang đếm chu kỳ đồng hồ, String.Empty sẽ thực sự thực thi nhanh hơn, bởi vì nó không tạo đối tượng mới, trong khi "" sẽ tạo đối tượng Chuỗi mới.

Tuy nhiên, bạn thực sự không nên quá lo lắng về điều này, không có nhiều cách để đặt chuỗi thành trống sẽ gây ra vấn đề về hiệu suất! Bạn nên sử dụng cái nào là dễ đọc nhất ...

+0

Tại sao string.Empty tốt hơn ""? "" được thực tập và giống hệt với chuỗi .Emtpy. Object.ReferenceEquals (string.Empty, "") sẽ trả về true. – helium

+0

Câu trả lời đầu tiên của bạn là chính xác, nhưng tôi không quá chắc chắn về phần còn lại. Có lẽ chỉ cần gắn bó với những gì bạn chắc chắn? –

+0

Có, nó có thể được interned, nhưng Brad Adams ngụ ý điều này không nhất thiết phải là trường hợp ... http://blogs.msdn.com/brada/archive/2003/04/22/49997.aspx Vì vậy, String.Empty là an toàn hơn nếu chúng ta thực sự sau những sự tối ưu hóa này. Có lẽ trình biên dịch không/có thể/nên tối ưu hóa điều này? Tôi đã không xem IL để kiểm tra ... –

2
  1. Sự khác biệt hiệu suất giữa hai tùy chọn sẽ quá nhỏ để đo lường, rất có thể.
  2. TextBox.Text = String.Empty; dễ đọc hơn nhiều. Nó nêu rõ những gì bạn đang cố gắng làm: "thiết lập thuộc tính văn bản của hộp văn bản này thành một chuỗi rỗng".

Tôi khuyên bạn nên chuyển sang bài tập vì nó nhanh hơn và rõ ràng hơn nhiều.

1
textbox.text=""; 

hoặc

foreach (var item in Page.Controls) 
    { 
     if (item is TextBox) 
     { 
      ((TextBox)item).Text = ""; 
     } 
    } 
Các vấn đề liên quan