2011-01-28 9 views
48

मैं ऐसा करना चाहते हैं:सी # गुण: निजी क्षेत्र के बिना कस्टम सेट संपत्ति का उपयोग कैसे करें?

public Name 
{ 
    get; 
    set 
    { 
     dosomething(); 
     ??? = value 
    } 
} 

यह स्वत: जनरेट निजी क्षेत्र का उपयोग करना संभव है?

private string name; 
public string Name 
{ 
    get 
    { 
     return name; 
    } 
    set 
    { 
     dosomething(); 
     name = value 
    } 
} 
+1

इस तो सवाल पर इस पर अच्छी चर्चा के बहुत सारे है: http://stackoverflow.com/questions/1277018/c-3-0-automatic- गुण-क्या-होगा-नाम-का-निजी-परिवर्तनीय-निर्माण –

उत्तर

60

एक बार जब आप गेटटर या सेटर में कुछ भी कस्टम करना चाहते हैं तो आप अब ऑटो गुणों का उपयोग नहीं कर सकते हैं।

13

यह संभव नहीं है:
या यह आवश्यक है कि मैं इसे इस तरह लागू है। या तो ऑटो लागू गुण या कस्टम कोड।

3

यह आवश्यक है कि आप इसे अपने परिदृश्य को पूरी तरह कार्यान्वित करें। get और set दोनों या तो ऑटो-कार्यान्वित या पूरी तरह कार्यान्वित किए जाने चाहिए, दोनों के संयोजन नहीं।

14

आप कुछ इस तरह की कोशिश कर सकते हैं:

public string Name { get; private set; } 
public void SetName(string value) 
{ 
    DoSomething(); 
    this.Name = value; 
} 
+4

+1 मेरे दिमाग में यह उत्तर स्वीकृत उत्तर को अस्वीकार करता है। यह ऑटो गुणों का उपयोग कर रहा है। यह स्पष्ट रूप से निजी से सेटटर सेट करता है। यह एक अच्छी बात है क्योंकि यह अंतिम उपयोगकर्ता या डेवलपर को पता है कि सेटटर विधि के पीछे और अधिक संभावना है। – ooXei1sh

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