2013-03-13 27 views
5

Nếu bạn đặt ListItem.Value thành giá trị trước khi đặt giá trị Text, cả hai TextValue sẽ được đặt thành cùng một giá trị. Tôi có thể giải quyết vấn đề này, nhưng tôi chỉ muốn biết tại sao điều này lại xảy ra? Có phải vì một cái gì đó "phải" được thiết lập để màn hình? Và tại sao ghi đè khi mặc định là một chuỗi rỗng.ListItem.Value ghi đè Văn bản nếu không được đặt

Net 3,5

ListItem li = new ListItem(); 
li.Value = "abc"; //Text is now = "abc" 
li.Text = "def"; 
li.Value = "qwe"; //Text remains "def" 
+0

Bạn có chắc chắn 100% trước khi bài tập đầu tiên của bạn Văn bản thực sự là chuỗi.Empty và không null? –

+0

@DavidePiras, nó không phải là tôi không chắc chắn đoạn mã của tôi, nhưng đây là mã EXACT tôi chạy để kiểm tra lý thuyết này. – gunr2171

Trả lời

7

Đó là bởi vì các getter của Text tài sản được thực hiện theo cách này:

get 
{ 
    if (this.text != null) 
    { 
     return this.text; 
    } 
    if (this.value != null) 
    { 
     return this.value; 
    } 
    return string.Empty; 
} 

MSDN:

Sử dụng các thuộc tính Text để xác định hoặc xác định văn bản được hiển thị trong điều khiển danh sách cho mục được đại diện bởi ListItem. Lưu ý Nếu thuộc tính Văn bản chứa giá trị rỗng, trình truy cập nhận được trả về giá trị của Thuộc tính giá trị. Nếu thuộc tính Value, lần lượt, chứa null, String.Empty được trả về.

Thuộc tính Value là cách khác xung quanh:

Nếu tài sản giá trị chứa null, get accessor trả về giá trị của thuộc tính Text. Nếu thuộc tính Text, lần lượt, chứa null, String.Empty được trả về.

+0

do mã này, thuộc tính văn bản phải trả về thuộc tính giá trị thứ hai đã được đặt. và anh ấy nói nó không .. tài sản văn bản vẫn còn là – Elior

+1

@Elior: Tại sao? Anh ta đã thiết lập thuộc tính Text trước khi thiết lập thuộc tính value thứ hai. Vì vậy, tại thời điểm này getter của 'Text' trả về văn bản thực tế. Chỉ khi một trong các thuộc tính này không được đặt, thuộc tính này sẽ trả về thuộc tính đã đặt (đã) khác. Nếu cả hai thuộc tính là null, string.empty được trả về. Đây là một mẫu chung nếu hai thuộc tính có liên quan và ít nhất một thuộc tính phải được trả về. –

+0

oops .. bạn nói đúng .. tôi đã đọc lướt qua câu trả lời của bạn .. xin lỗi .. :) – Elior

Các vấn đề liên quan