सामान्य तौर पर, C# के सभी प्रकारों को दो मुख्य श्रेणियों में विभाजित किया जा सकता है - मान प्रकार और संदर्भ प्रकार . आइए प्रत्येक प्रकार को विस्तार से देखें।
मान प्रकार
मूल्य प्रकारों के वेरिएबल में सीधे उनका डेटा होता है। प्रत्येक चर के पास डेटा की अपनी प्रति होती है। इसलिए मान प्रकार के एक चर के लिए किसी अन्य वस्तु को संशोधित करना असंभव है।
एक मान प्रकार निम्न प्रकारों में से एक हो सकता है -
- सभी संख्यात्मक प्रकार, जैसे, int, float, और दोगुना
- चार और बूल प्रकार
- संरचना टाइप करें या
- गणना टाइप करें।
एक मान प्रकार सरल में मान होता है। उदाहरण के लिए, पूर्णांक प्रकार में वास्तविक संख्या होती है, न कि संख्या का सूचक, जैसे संदर्भ प्रकार।
एक कस्टम मान प्रकार बनाने के लिए, आप एक संरचना का उपयोग कर सकते हैं। उदाहरण के लिए -
public struct Point { public int X; public int Y; } var p1 = new Point();
स्मृति में, एक बिंदु का एक उदाहरण इस प्रकार दर्शाया जाता है -
जब आप किसी अन्य चर के लिए मान प्रकार का एक चर निर्दिष्ट करते हैं, तो असाइनमेंट ऑपरेशन असाइन किए जा रहे मान की एक प्रति बनाता है। उदाहरण के लिए,
Point p2 = p1;
संदर्भ प्रकार
संदर्भ प्रकार के चर अपनी वस्तुओं के संदर्भ को संग्रहीत करते हैं। दो अलग-अलग चर के लिए एक ही वस्तु का संदर्भ रखना संभव है। एक चर द्वारा वस्तु में किया गया कोई भी परिवर्तन दूसरे चर के लिए दृश्यमान होता है।
एक संदर्भ प्रकार में निम्नलिखित प्रकार होते हैं -
- स्ट्रिंग
- कक्षा
- सरणी
- प्रतिनिधि
- इंटरफ़ेस
उदाहरण के लिए, आप एक वर्ग बना सकते हैं, जो एक संदर्भ प्रकार इस प्रकार है -
public class Point{ public int X; public int Y; } var p1 = new Point();
जब आप किसी अन्य चर के लिए संदर्भ प्रकार का एक चर निर्दिष्ट करते हैं, तो असाइनमेंट ऑपरेशन केवल संदर्भ की प्रतिलिपि बनाता है, न कि वास्तविक वस्तु।
Point p2 = p1;
उदाहरण
using System; class Program{ static void Main(){ var p1 = new Point { X = 10 }; Point p2 = p1; p2.X = 20; Console.WriteLine("Value Type"); Console.WriteLine(p1.X); Console.WriteLine(p2.X); var u1 = new User { Age = 10 }; User u2 = u1; u2.Age = 20; Console.WriteLine("Reference Type"); Console.WriteLine(u1.Age); Console.WriteLine(u2.Age); } } public struct Point{ public int X; public int Y; } public class User{ public int Age { get; set; } }
आउटपुट
Value Type 10 20 Reference Type 20 20