2013-05-25 5 views
10

मैं सी # सीख रहा हूं, और कक्षा में निजी क्षेत्र बनाने के बारे में सीख रहा हूं, और फील्ड मूल्यों के बजाय विधियों का पर्दाफाश करने के लिए गेटर्स और सेटर्स का उपयोग कर रहा हूं।शॉर्टैंड एक्सेसर्स और म्यूटेटर

get; set;विधि में 1 और विधि 2 बराबर हैं? जैसे क्या दूसरा एक शॉर्टेंड है?

class Student 
{ 
    // Instance fields 
    private string name; 
    private int mark; 

    // Method 1 
    public string Name { get; set; } 

    // Method 2 
    public int Mark 
    { 
     get { return mark; } 
     set { mark = value; } 
    } 
} 

अंत में, विधि 2 इस्तेमाल किया जाएगा जब आप उदाहरण के लिए हो रही है या एक मूल्य निर्धारित करने से पहले एक गणना प्रदर्शन करने के लिए करना चाहते हैं? जैसे मूल्य को प्रतिशत में परिवर्तित करना या सत्यापन करना? जैसे

class Student 
{ 
    // Instance fields 
    private string name; 
    private double mark; 
    private int maxMark = 50; 

    // Method 1 
    public string Name { get; set; } 

    // Method 2 
    public double Mark 
    { 
     get { return mark; } 
     set { if (mark <= maxMark) mark = value/maxMark * 100; } 
    } 
} 
+0

[इस उत्तर] पर एक नज़र डालें [http://stackoverflow.com/questions/15454470/why-arent-simple-properties-optimized-to-fields/15454538#15454538); यह कुछ विस्तार से दिखाता है। –

+0

संभावित डुप्लिकेट [सी # में स्वचालित गुण क्या हैं और उनका उद्देश्य क्या है?] (Http://stackoverflow.com/questions/6001917/what-are-automatic-properties-in-c-sharp-and-what-is - उनके उद्देश्य) –

उत्तर

8

हां, विधि 1 विधि 2 का शॉर्टकट है। मैं डिफ़ॉल्ट रूप से विधि 1 का उपयोग करने का सुझाव देता हूं। जब आपको अधिक कार्यक्षमता की आवश्यकता होती है, तो विधि 2 का उपयोग करें। आप प्राप्त करने और सेट करने के लिए विभिन्न एक्सेस संशोधक भी निर्दिष्ट कर सकते हैं।

+1

आह, तो आप का मतलब है कि मैं कुछ संरक्षित सेट {अगर (चिह्न <= maxMark) चिह्न = मूल्य/अधिकतममार्क * 100 की तरह कुछ कर सकता हूं; } '??? – Gravy

+0

हां, यह सही है। – Robin

+2

ध्यान दें कि नाम गेटर/सेटर निजी स्ट्रिंग नाम को वापस/सेट नहीं करेगा, लेकिन एक आंतरिक चर जो आपके पास सीधे पहुंच नहीं है। – Bikonja

7

हां, Method2 आपके पास कस्टम गेटर और सेटर फ़ंक्शन होने पर जाने का तरीका है। डिफ़ॉल्ट रूप से जब आप विधि 1 का उपयोग करते हैं, तो एक डिफ़ॉल्ट निजी संपत्ति आंतरिक रूप से संभाली जाएगी। अधिक जानकारी के लिए कृपया URL देखें

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