C# Structs

Introduction to C# Structs

C# में class की तरह structs भी blueprint ही होते है जिनके objects create किये जाते है। लेकिन classes और structs में कुछ महत्वपूर्ण differences पाए जाते है जिनके कारण इन्हें अलग अलग situations में use किया जाता है।

Structs value types होते है और classes reference types होती है। Structs को new keyword के साथ या new keyword बिना भी instantiate (object create करना) किया जा सकता है। सभी structs directly System.valueType से inherit होते है।

Structs lightweight objects को represent करने के लिए उपयुक्त होते है। जैसे की C# में Point, Rectangle और Color structs available है जो simple coordinates को declare करते है।

किसी struct के अंदर आप variables को initialize (value assign करवाना।) नहीं कर सकते है। लेकिन यदि आप variables को constant या static declare करते है तो उन्हें initialize कर सकते है।

एक struct के अंदर आप default constructor (बिना parameters वाला constructor) या finalizer नहीं define कर सकते है। लेकिन parameters के साथ constructor define किया जा सकता है।

जब एक struct को किसी variable को assign किया जाता है तो उसका पूरा data उस variable में copy हो जाता है। यदि उस variable में कोई changes किये जाते है तो original struct में कोई change नहीं आता है।

Structs inheritance को support नहीं करते है। यानी की एक struct किसी दूसरे struct या class को inherit नहीं कर सकते है। इसके अलावा एक struct किसी class के लिए base के रूप में भी नहीं use किया जा सकता है।

Structs interfaces को implement कर सकते है। इसके अलावा structs को nullable type के रूप में भी use किया जा सकता है और null value assign की जा सकती है।

Syntax of C# Structs

C# में structs का general syntax निचे दिया जा रहा है।

access-modifier struct-keyword struct-name
{
    //Fields (variables), properties, methods etc here...
}

Struct का syntax classes की तरह ही होता है लेकिन ये classes से limited होते है और जैसा की मैने पहले बताया इन्हें lightweight objects create करने के लिए उपयोग किया जाता है।

किसी struct का object आप 2 प्रकार से create कर सकते है। पहला तो आप new keyword के द्वारा किसी struct का object create कर सकते है जैसे की किसी class का object create किया जाता है।

struct-name object-name = new-keyword struct-name();

जब आप new keyword द्वारा object create करते है तो object create हो जाता है और signature के अनुसार appropriate constructor call हो जाता है।

Structs का object new keyword के बिना भी create किया जा सकता है। इस वजह से structs का allocation class से बेहतर हो जाता है।

struct-name object-name;

लेकिन जब आप बिना new keyword के struct का object create करते है तो fields initialize नहीं होते है क्योंकि कोई constructor call नहीं होता है। ऐसे में उस object को आप use नहीं कर सकते है जब तक की उसके fields को initialize नहीं कर दिया जाए। Fields को आप खुद struct के नाम के बाद dot (.) operator लगाकर initialize करते है।

जब आप struct को default constructor के द्वारा instantiate करते है तो सभी members को उनकी default values assign की जाती है।

Example of C# Structs

C# में structs का simple उदाहरण निचे दिया जा रहा है।

using System;

public struct Employee
{
    public string Name;
    public int Age;

    public Employee(string n, int a)
    {
          Name = n;
          Age = a;
    }
}

class testEmployee
{
     static void Main()
    {
        Employee e1 = new Employee("Manoj",40);
        Employee e2;

        Console.WriteLine("Employee 1 Name is {0} and Age is {1}",e1.Name, e1.Age);

        e2.Name = "Ali";
        e2.Age = 30;

        Console.WriteLine("Employee 2 Name is {0} and Age is {1}",e2.Name, e2.Age);
    }
}

ऊपर दिया गया उदाहरण निचे दिया गया output generate करता है।

Employee 1 Name is Manoj and Age is 40
Employee 2 Name is Ali and Age is 30