Avatar ·

C# में struct बनाम class का उपयोग कब करें: value types और reference types को समझना

सभी को नमस्ते! मैं लगभग एक साल से C# में लिख रहा हूँ, और मुझे लगातार यह सवाल परेशान करता है: struct का उपयोग कब करना चाहिए और class का कब? मुझे लगता है कि मैं अंतर समझता हूँ — struct एक value type है, और class एक reference type है। लेकिन व्यवहार में, मैं अक्सर भ्रमित हो जाता हूँ। उदाहरण के लिए, मेरे पास यह कोड है: ```csharp public class PointClass { public int X { get; set; } public int Y { get; set; } public PointClass(int x, int y) { X = x; Y = y; } } public struct PointStruct { public int X { get; set; } public int Y { get; set; } public PointStruct(int x, int y) { X = x; Y = y; } } ``` दोनों एक ही काम करते प्रतीत होते हैं। लेकिन मैंने पढ़ा है कि छोटे objects के लिए struct तेज़ होता है, क्योंकि वे stack में store होते हैं, जबकि class heap में। दूसरी ओर, मैंने सुना है कि struct का उपयोग collections, LINQ या async के साथ नहीं करना चाहिए, क्योंकि वे इधर-उधर copy होने लगते हैं और performance गिर जाती है। मैं यह भी नहीं समझता कि struct में बिना parameters वाला constructor declare क्यों नहीं किया जा सकता।