2011-03-26 15 views
6

क्या मैं एक ईवेंट श्रोता स्थापित कर सकता हूं ताकि जब कोई बूल किसी फ़ंक्शन को बदलता है तो उसे कॉल किया जाता है?सी # bool.change घटना

उत्तर

11

आप सी # में गुण का उपयोग करना चाहिए, तो आप किसी भी निपटने आप सेटर में चाहते जोड़ सकते हैं (प्रवेश, किसी ईवेंट को ट्रिगर, ...)

private Boolean _boolValue 
public Boolean BoolValue 
{ 
    get { return _boolValue; } 
    set 
    { 
     _boolValue = value; 
     // trigger event (you could even compare the new value to 
     // the old one and trigger it when the value really changed) 
    } 
} 
+0

हम्म मैं खो गया हूं। क्या आप कृपया मुझे जाने के लिए एक उदाहरण प्रदान कर सकते हैं? – brux

+0

धन्यवाद आईएम अब परीक्षण कर रहा है – brux

+0

हो गया :-) गुण कई चीजों में वास्तव में अच्छे हैं। मैं आपको हमेशा सार्वजनिक डेटा (सदस्यों के बजाय) के लिए उनका उपयोग करने का आग्रह करता हूं। यह परिवर्तन या जोड़ों को आसान बनाता है और आप उन्हें इंटरफेस में निर्दिष्ट कर सकते हैं, जिन्हें आप सदस्यों के लिए नहीं कर सकते ... – jdehaan

5

मैन्युअल, हाँ आप कर सकते हैं

public delegate void SomeBoolChangedEvent(); 
public event SomeBoolChangedEvent SomeBoolChanged; 

private bool someBool; 
public bool SomeBool 
{ 
    get 
    { 
     return someBool; 
    } 
    set 
    { 
     someBool = value; 
     if (SomeBoolChanged != null) 
     { 
      SomeBoolChanged(); 
     } 
    } 
} 

हालांकि सुनिश्चित नहीं है कि यह वही है जो आप खोज रहे हैं।

5

यहां महत्वपूर्ण सवाल यह है कि: boolक्या परिवर्तन?

bool एक मूल्य प्रकार है जिसे आप सीधे इसके संदर्भ में पारित नहीं कर सकते हैं। तो पर bool पर किसी भी चीज़ के बारे में बात करने का कोई अर्थ नहीं है - यदि bool परिवर्तन करता है, तो को bool द्वारा संशोधित किया गया है, संशोधित नहीं किया गया है।

तस्वीर बदलती है अगर हम एक संदर्भ प्रकार पर bool फ़ील्ड या संपत्ति के बारे में बात कर रहे हैं। इस मामले में, स्वीकृत अभ्यास bool को "बदली गई" अधिसूचना बढ़ाने के लिए संपत्ति (सार्वजनिक फ़ील्ड पर फेंक दिया गया है) और use the INotifyPropertyChanged.PropertyChanged event के रूप में बेनकाब करना है।

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