सी # में एक वर्ग आवश्यक प्रकारों में से एक है। हम समस्या क्षेत्र के लिए प्रासंगिक वस्तुओं के लिए एक ब्लूप्रिंट के रूप में एक वर्ग के बारे में सोच सकते हैं। यह एक टेम्प्लेट है जिससे हम ऑब्जेक्ट बनाते हैं, संरचना और व्यवहार को परिभाषित करते हैं जो इस वर्ग से बनाए गए ऑब्जेक्ट्स के सेट द्वारा साझा किए जाएंगे। सरल शब्दों में, एक वर्ग कुकी-कटर है, और ऑब्जेक्ट स्वयं कुकीज़ हैं।
एक वर्ग एनकैप्सुलेशन को भी सक्षम बनाता है, जो ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग में एक महत्वपूर्ण अवधारणा है। इसका अर्थ है एक ही स्थान पर डेटा पर काम करने वाले डेटा और संचालन का संयोजन और उस ऑब्जेक्ट के उपयोगकर्ताओं को एक साधारण एपीआई प्रदान करना। एक वर्ग हमें डेटा को इनकैप्सुलेट करने की अनुमति देता है और अन्य वर्गों से अप्रासंगिक विवरण छुपाता है।
हम क्लास कीवर्ड का उपयोग करके क्लास बना सकते हैं, उसके बाद क्लास का नाम।
// User.cs public class User{ private string name; private int salary; public void Promote(){ salary += 1000; } }
उपरोक्त उदाहरण में, उपयोगकर्ता एक वर्ग है जो उपयोगकर्ताओं का प्रतिनिधित्व करता है। वर्ग डेटा के दो टुकड़ों को समाहित करता है - नाम और वेतन . इन्हें वर्ग फ़ील्ड के रूप में जाना जाता है, और उपयोगकर्ता के नाम और वेतन को धारण करते हैं। इसकी एक विधि भी है जिसका नाम है Promote() , जो उपयोगकर्ता के वेतन को बढ़ाता है।
प्रत्येक वर्ग में एक संबद्ध एक्सेस संशोधक होता है जो नियंत्रित करता है कि कक्षा अन्य वर्गों के लिए दृश्यमान होगी या नहीं। एक्सेस संशोधक के लिए हम यहां पांच संभावित मान प्रदान कर सकते हैं।
पहुँच संशोधक | <थ>विवरण|
---|---|
सार्वजनिक | असीमित पहुंच |
संरक्षित | व्युत्पन्न कक्षाओं तक सीमित पहुंच |
आंतरिक | विधानसभा तक सीमित पहुंच |
आंतरिक सुरक्षित | असेंबली या व्युत्पन्न कक्षाओं तक सीमित पहुंच |
निजी | कोई बाहरी पहुंच नहीं |
किसी वर्ग का उदाहरण बनाने के लिए, हम नया . का उपयोग कर सकते हैं खोजशब्द। नया ऑपरेटर ऑब्जेक्ट के डेटा के लिए आवश्यक बाइट्स की संख्या की गणना करता है और ऑब्जेक्ट के लिए मेमोरी आवंटित करता है। फिर यह नव निर्मित वस्तु के लिए एक सूचक (जिसे संदर्भ भी कहा जाता है) देता है।
var alice = new User(); var bob = new User();
यह संदर्भ तब वेरिएबल में संग्रहीत होता है जो =चिह्न के बाईं ओर होता है। उपरोक्त उदाहरण में, ऐलिस और बॉब नव निर्मित वस्तुओं के संदर्भ या संकेत रखते हैं।
C# में, एक वर्ग के लिए नामकरण परंपरा PascalCase का अनुसरण करती है जो एक मिश्रित शब्द में प्रत्येक शब्द के पहले अक्षर को बड़ा करती है, उदा। StringBuilder, UserController, आदि। फ़ाइल में एक वर्ग बनाना आवश्यक नहीं है जिसका नाम वर्ग के नाम से मेल खाता हो। हालांकि, यह अधिकांश C# परियोजनाओं द्वारा उपयोग किया जाने वाला एक सम्मेलन है।
कन्स्ट्रक्टर
उपरोक्त उदाहरण में, जब हमने उपयोगकर्ता वर्ग, यानी एलिस और बॉब के उदाहरण बनाए, तो हमने उनके प्रारंभिक नाम और वेतन प्रदान नहीं किए। अक्सर एक नई बनाई गई वस्तु को अपना काम करने के लिए कुछ जानकारी की आवश्यकता होती है, और एक कंस्ट्रक्टर का उपयोग क्लास डेटा को इनिशियलाइज़ करने के लिए किया जाता है।
हम उपयोगकर्ता को उसका नाम और वेतन देने के लिए एक कंस्ट्रक्टर जोड़ सकते हैं -
public class User{ private string name; private int salary; public User(string name, int salary){ this.name = name; this.salary = salary; } public void Promote(){ salary += 1000; } }
एक कंस्ट्रक्टर होने से हम एक नया उदाहरण बनाते समय उपयोगकर्ता का नाम और वेतन पास कर सकते हैं।
var alice = new User("Alice", 50000); var bob = new User("Bob", 45000);
एक वर्ग में एक से अधिक कंस्ट्रक्टर होना संभव है। कई कंस्ट्रक्टर होने से हम अलग-अलग तरीकों से क्लास को इनिशियलाइज़ कर सकते हैं। उदाहरण के लिए, हम एक और कंस्ट्रक्टर जोड़ सकते हैं जो केवल उपयोगकर्ता का नाम लेता है और एक डिफ़ॉल्ट वेतन प्रदान करता है।
public User(string name){ this.name = name; this.salary = 50000; }
उदाहरण
using System; class Program{ static void Main(){ var alice = new User(); alice.Print(); var bob = new User(); bob.Print(); var chris = new User("Chris", 50000); chris.Print(); var debs = new User("Debs", 45000); debs.Print(); var scott = new User("Scott"); scott.Print(); } } public class User{ private string name; private int salary; public User(){ } public User(string name){ this.name = name; this.salary = 50000; } public User(string name, int salary){ this.name = name; this.salary = salary; } public void Promote(){ salary += 1000; } public void Print(){ Console.WriteLine($"{name}: {salary}"); } }
आउटपुट
: 0 : 0 Chris: 50000 Debs: 45000 Scott: 50000