2013-03-13 4 views
5

सेट नहीं आप अपने Text मूल्य निर्धारित करने से पहले एक मूल्य के ListItem.Value निर्धारित करते हैं, दोनों Text और Value एक ही मान पर सेट हो जाएगा। मैं इसके चारों ओर मिल सकता हूं, लेकिन मैं सिर्फ यह जानना चाहता हूं कि ऐसा क्यों होता है? क्या ऐसा इसलिए है क्योंकि स्क्रीन पर कुछ "जरूरी" होना चाहिए? और जब डिफ़ॉल्ट खाली स्ट्रिंग होता है तो ओवरराइट क्यों करें।ListItem.Value पाठ अधिलेखित कर देता है, तो

नेट 3,5

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

क्या आप 100% सुनिश्चित हैं कि आपके पहले असाइनमेंट टेक्स्ट वास्तव में स्ट्रिंग है। लक्षण और शून्य नहीं? –

+0

@ डेविड पाइरास, यह नहीं है कि मैं अपने कोड स्निपेट से अनिश्चित हूं, लेकिन यह सटीक कोड है जिसे मैं इस सिद्धांत का परीक्षण करने के लिए चला गया। – gunr2171

उत्तर

7

यह क्योंकि Text संपत्ति के गेटर इस तरह से कार्यान्वित किया जाता है है:

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

MSDN:

निर्दिष्ट करने के लिए पाठ संपत्ति का प्रयोग करें या ListItem द्वारा प्रस्तुत आइटम के लिए सूची नियंत्रण में प्रदर्शित पाठ का निर्धारण करें। नोट यदि टेक्स्ट प्रॉपर्टी में शून्य है, तो एक्सेसर वैल्यू प्रॉपर्टी का मान देता है। यदि मूल्य संपत्ति, बदले में, शून्य, स्ट्रिंग शामिल है। लक्षण वापस आ गया है।

मूल्य संपत्ति अशक्त हैं, तो प्राप्त एक्सेसर रिटर्न पाठ संपत्ति का मूल्य:

Value संपत्ति दूसरी तरह के आसपास है। यदि टेक्स्ट प्रॉपर्टी में बदले में शून्य, स्ट्रिंग शामिल है। लक्षण वापस आ गया है।

+0

इसलिए इस कोड से, टेक्स्ट प्रॉपर्टी को सेट की गई दूसरी वैल्यू प्रॉपर्टी को वापस करना चाहिए। और उसने कहा कि यह नहीं है .. पाठ संपत्ति अभी भी – Elior

+1

@Elior बनी हुई है: क्यों? उसने दूसरी संपत्ति संपत्ति सेट करने से पहले टेक्स्ट प्रॉपर्टी सेट की है। तो इस समय 'टेक्स्ट' का प्राप्तकर्ता वास्तविक पाठ देता है। केवल अगर इन गुणों में से कोई एक सेट नहीं है, तो यह संपत्ति अन्य (पहले से) सेट संपत्ति लौटाती है। यदि दोनों गुण शून्य हैं, string.empty वापस आ गया है। यह एक आम पैटर्न है यदि दो गुण संबंधित हैं और कम से कम एक को वापस किया जाना चाहिए। –

+0

ओह .. आप सही हैं .. मैंने आपका जवाब स्किम किया .. क्षमा करें .. :) – Elior

संबंधित मुद्दे