इसलिए जैसा कि मैं समझता हूं कि यह { get; set; }
एक "ऑटो प्रॉपर्टी" है, जो @Klaus और @Brandon की तरह है, "बैकिंग फ़ील्ड" के साथ प्रॉपर्टी लिखने के लिए शॉर्टहैंड है। तो इस मामले में:
public class Genre
{
private string name; // This is the backing field
public string Name // This is your property
{
get => name;
set => name = value;
}
}
हालाँकि, यदि आप मेरे जैसे हैं - लगभग एक घंटे पहले या तो - आप वास्तव में क्या गुण और एक्सेसर्स नहीं समझते हैं हैं, और आप कुछ बुनियादी शब्दावलियों का सबसे अच्छा समझ या तो नहीं है। MSDN इस तरह से सामान सीखने का एक बढ़िया साधन है, लेकिन शुरुआती लोगों के लिए इसे समझना हमेशा आसान नहीं होता है। इसलिए मैं इसे और अधिक गहराई से यहाँ समझाने की कोशिश करने वाला हूँ।
get
और set
कर रहे हैं accessors , वे सक्षम अर्थ में पहुँच डेटा और जानकारी के लिए निजी एक से क्षेत्रों (आमतौर पर समर्थन क्षेत्र ) और आमतौर पर से ऐसा कर सार्वजनिक गुण (के रूप में आप ऊपर के उदाहरण में देख सकते हैं)।
इस बात से कोई इंकार नहीं है कि उपरोक्त कथन बहुत ही भ्रमित करने वाला है, तो चलिए कुछ उदाहरणों पर चलते हैं। मान लीजिए कि यह कोड संगीत की शैलियों का जिक्र कर रहा है। इसलिए कक्षा शैली के भीतर, हम संगीत के विभिन्न शैलियों को चाहते हैं। मान लें कि हम 3 शैलियों चाहते हैं: हिप हॉप, रॉक, और देश। ऐसा करने के लिए हम उस वर्ग के नए उदाहरण बनाने के लिए कक्षा के नाम का उपयोग करेंगे ।
Genre g1 = new Genre(); //Here we're creating a new instance of the class "Genre"
//called g1. We'll create as many as we need (3)
Genre g2 = new Genre();
Genre g3 = new Genre();
//Note the () following new Genre. I believe that's essential since we're creating a
//new instance of a class (Like I said, I'm a beginner so I can't tell you exactly why
//it's there but I do know it's essential)
अब जब हमने Genre वर्ग के उदाहरण बनाए हैं तो हम 'Name' प्रॉपर्टी का उपयोग करके शैली के नाम सेट कर सकते हैं जो ऊपर सेट किया गया था।
public string Name //Again, this is the 'Name' property
{ get; set; } //And this is the shorthand version the process we're doing right now
हम निम्नलिखित लिखकर हिप हॉप के लिए 'g1' का नाम सेट कर सकते हैं
g1.Name = "Hip Hop";
यहां जो हो रहा है वह जटिल है। जैसा कि मैंने पहले कहा था, get
और set
निजी क्षेत्रों से ऐसी जानकारी प्राप्त करना जो आप अन्यथा उपयोग नहीं कर पाएंगे। get
केवल उस निजी क्षेत्र की जानकारी पढ़ सकते हैं और उसे वापस कर सकते हैं। set
केवल कर सकते हैं उस निजी क्षेत्र में जानकारी लिख । लेकिन दोनों के पास एक संपत्ति होने से get
और set
हम उन दोनों कार्यों को करने में सक्षम हैं। और लिखकर g1.Name = "Hip Hop";
हम विशेष रूप set
से अपने नाम संपत्ति से फ़ंक्शन का उपयोग कर रहे हैं
set
कहा जाता है एक अंतर्निहित चर का उपयोग करता है value
। मूल रूप से इसका मतलब यह है कि किसी भी समय आप "मूल्य" देख सकते हैं set
, यह एक चर का जिक्र है; "मान" चर। जब हम लिखते हैं कि g1.Name =
हम चर =
में पास होने के लिए उपयोग कर रहे हैं value
जो इस मामले में है "Hip Hop"
। तो आप अनिवार्य रूप से इस तरह से सोच सकते हैं:
public class g1 //We've created an instance of the Genre Class called "g1"
{
private string name;
public string Name
{
get => name;
set => name = "Hip Hop"; //instead of 'value', "Hip Hop" is written because
//'value' in 'g1' was set to "Hip Hop" by previously
//writing 'g1.Name = "Hip Hop"'
}
}
यह नोट करना महत्वपूर्ण है कि उपरोक्त उदाहरण वास्तव में कोड में नहीं लिखा गया है। यह एक काल्पनिक कोड से अधिक है जो यह दर्शाता है कि पृष्ठभूमि में क्या चल रहा है।
इसलिए अब हमने Genre के g1 उदाहरण का नाम सेट कर दिया है , मेरा मानना है कि हम नाम लिखकर प्राप्त कर सकते हैं
console.WriteLine (g1.Name); //This uses the 'get' function from our 'Name' Property
//and returns the field 'name' which we just set to
//"Hip Hop"
और अगर हमने इसे चलाया तो हम "Hip Hop"
अपने कंसोल में पहुंचेंगे।
तो इस स्पष्टीकरण के उद्देश्य के लिए मैं उदाहरण के साथ ही आउटपुट को पूरा करूँगा
using System;
public class Genre
{
public string Name { get; set; }
}
public class MainClass
{
public static void Main()
{
Genre g1 = new Genre();
Genre g2 = new Genre();
Genre g3 = new Genre();
g1.Name = "Hip Hop";
g2.Name = "Rock";
g3.Name = "Country";
Console.WriteLine ("Genres: {0}, {1}, {2}", g1.Name, g2.Name, g3.Name);
}
}
आउटपुट:
"Genres: Hip Hop, Rock, Country"