Full basic guide of c# code

C# प्रोग्रामिंग गाइड

C# क्या है और इसका उपयोग क्यों किया जाता है?

C# (उच्चारण "सी शार्प") माइक्रोसॉफ्ट द्वारा विकसित एक आधुनिक, ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग भाषा है। इसे विशेष रूप से .NET प्लेटफॉर्म के लिए डिज़ाइन किया गया है, लेकिन इसका उपयोग विभिन्न प्रकार के अनुप्रयोगों को बनाने के लिए किया जा सकता है।

C# का उपयोग क्यों किया जाता है?

  • .NET विकास: यह .NET फ्रेमवर्क और .NET कोर के साथ पूरी तरह से एकीकृत है, जो वेब, डेस्कटॉप, मोबाइल, क्लाउड और गेम डेवलपमेंट के लिए एक शक्तिशाली मंच प्रदान करता है।
  • ऑब्जेक्ट-ओरिएंटेड: C# ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग (OOP) के सिद्धांतों का समर्थन करता है, जैसे कि इनकैप्सुलेशन, इनहेरिटेंस और पॉलीमॉर्फिज़्म, जो कोड को अधिक मॉड्यूलर, पुन: प्रयोज्य और बनाए रखने योग्य बनाते हैं।
  • टाइप सेफ्टी: C# एक दृढ़ता से टाइप की गई भाषा है, जिसका अर्थ है कि कंपाइलर कोड में टाइप से संबंधित त्रुटियों को पकड़ सकता है, जिससे रनटाइम त्रुटियों की संभावना कम हो जाती है।
  • समृद्ध पुस्तकालय: .NET प्लेटफॉर्म एक विशाल पुस्तकालय प्रदान करता है जिसमें पूर्व-लिखित कोड होता है जिसका उपयोग विभिन्न कार्यों को करने के लिए किया जा सकता है, जिससे विकास प्रक्रिया तेज हो जाती है।
  • क्रॉस-प्लेटफॉर्म क्षमता: .NET कोर के आगमन के साथ, C# अनुप्रयोगों को विंडोज, मैकओएस और लिनक्स पर चलाया जा सकता है।
  • गेम डेवलपमेंट: यह यूनिटी गेम इंजन के लिए प्राथमिक भाषा है, जिसका उपयोग 2D और 3D गेम विकसित करने के लिए किया जाता है।
  • वेब डेवलपमेंट: ASP.NET का उपयोग करके शक्तिशाली और स्केलेबल वेब एप्लिकेशन और वेब एपीआई बनाना संभव है।

C# में वेरिएबल कैसे घोषित करें?

C# में एक वेरिएबल घोषित करने के लिए, आपको इसका डेटा टाइप निर्दिष्ट करना होगा, उसके बाद वेरिएबल का नाम। आप घोषणा के समय वेरिएबल को एक प्रारंभिक मान असाइन कर सकते हैं।



int age; // एक पूर्णांक वेरिएबल घोषित करना

string name = "जॉन डो"; // एक स्ट्रिंग वेरिएबल घोषित करना और इनिशियलाइज़ करना

float price = 19.99f; // एक फ्लोटिंग-पॉइंट वेरिएबल घोषित करना और इनिशियलाइज़ करना (f प्रत्यय ध्यान दें)

bool isVisible = true; // एक बूलियन वेरिएबल घोषित करना और इनिशियलाइज़ करना

C# में डेटा टाइप क्या हैं?

C# में विभिन्न प्रकार के डेटा टाइप होते हैं जिनका उपयोग विभिन्न प्रकार के डेटा को संग्रहीत करने के लिए किया जाता है। इन्हें मुख्य रूप से दो श्रेणियों में विभाजित किया गया है: वैल्यू टाइप और रेफरेंस टाइप।

वैल्यू टाइप्स (Value Types):

वैल्यू टाइप्स सीधे मेमोरी में डेटा संग्रहीत करते हैं। कुछ सामान्य वैल्यू टाइप्स में शामिल हैं:

  • int: पूर्णांक संख्याएँ (उदाहरण: -10, 0, 5)
  • float: एकल-परिशुद्धता फ़्लोटिंग-पॉइंट संख्याएँ (उदाहरण: 3.14f, -2.5f)
  • double: डबल-परिशुद्धता फ़्लोटिंग-पॉइंट संख्याएँ (उदाहरण: 3.14159, -2.567)
  • bool: बूलियन मान (true या false)
  • char: एक एकल यूनिकोड वर्ण (उदाहरण: 'A', '9')
  • decimal: वित्तीय और मौद्रिक गणनाओं के लिए उपयुक्त (उदाहरण: 100.50m)
  • struct: कस्टम वैल्यू टाइप्स को परिभाषित करने की अनुमति देता है
  • enum: नामित स्थिरांकों का एक सेट

रेफरेंस टाइप्स (Reference Types):

रेफरेंस टाइप्स मेमोरी में डेटा के लिए एक संदर्भ (पता) संग्रहीत करते हैं। इनमें शामिल हैं:

  • string: यूनिकोड वर्णों का एक अनुक्रम (उदाहरण: "हेलो", "वर्ल्ड")
  • class: ऑब्जेक्ट बनाने के लिए टेम्पलेट
  • object: सभी अन्य प्रकारों के लिए आधार प्रकार
  • interface: एक अनुबंध जो एक क्लास को लागू करना चाहिए
  • array: समान प्रकार के तत्वों का एक संग्रह
  • delegate: विधियों के लिए एक प्रकार-सुरक्षित संदर्भ

C# में ऑपरेटर कैसे काम करते हैं?

ऑपरेटर ऐसे प्रतीक हैं जो वेरिएबल्स और वैल्यूज पर संचालन करते हैं। C# विभिन्न प्रकार के ऑपरेटरों का समर्थन करता है:

  • अंकगणितीय ऑपरेटर: + (जोड़), - (घटाव), * (गुणा), / (भाग), % (मॉड्यूलो - शेषफल)
  • तुलनात्मक ऑपरेटर: == (बराबर), != (बराबर नहीं), > (से अधिक), < (से कम), >= (से अधिक या बराबर), <= (से कम या बराबर)
  • तार्किक ऑपरेटर: && (तार्किक AND), || (तार्किक OR), ! (तार्किक NOT)
  • असाइनमेंट ऑपरेटर: = (असाइन), += (जोड़कर असाइन), -= (घटाकर असाइन), आदि।
  • बिटवाइज़ ऑपरेटर: बिट स्तर पर संचालन करते हैं (जैसे &, |, ^, ~, <<, >>)



int a = 10;

int b = 5;

int sum = a + b; // योग: 15

int difference = a - b; // अंतर: 5

bool isEqual = (a == b); // बराबर है?: false

if (a > 5 && b < 10) {

    Console.WriteLine("दोनों शर्तें सत्य हैं");

}

C# में if-else स्टेटमेंट कैसे उपयोग करें?

if-else स्टेटमेंट का उपयोग किसी शर्त के आधार पर कोड के विभिन्न ब्लॉकों को निष्पादित करने के लिए किया जाता है। यदि निर्दिष्ट शर्त सत्य है, तो if ब्लॉक में कोड निष्पादित किया जाता है; अन्यथा, else ब्लॉक में कोड (यदि मौजूद है) निष्पादित किया जाता है।



int number = 10;

if (number > 0) {

    Console.WriteLine("संख्या धनात्मक है");

} else if (number < 0) {

    Console.WriteLine("संख्या ऋणात्मक है");

} else {

    Console.WriteLine("संख्या शून्य है");

}

C# में switch स्टेटमेंट कैसे उपयोग करें?

switch स्टेटमेंट एक वेरिएबल के मान के आधार पर कोड के कई ब्लॉकों में से एक को चुनने के लिए एक कुशल तरीका प्रदान करता है।



char grade = 'B';

switch (grade) {

    case 'A':

        Console.WriteLine("उत्कृष्ट!");

        break;

    case 'B':

        Console.WriteLine("बहुत अच्छा!");

        break;

    case 'C':

        Console.WriteLine("अच्छा।");

        break;

    default:

        Console.WriteLine("मान्य ग्रेड नहीं।");

        break;

}

C# में लूप (for, while, do-while) कैसे उपयोग करें?

लूप का उपयोग कोड के एक ब्लॉक को कई बार निष्पादित करने के लिए किया जाता है। C# तीन मुख्य प्रकार के लूप प्रदान करता है: for, while, और do-while

for लूप:

एक for लूप तब उपयोग किया जाता है जब आपको पता होता है कि कोड के ब्लॉक को कितनी बार निष्पादित करने की आवश्यकता है।



for (int i = 0; i < 5; i++) {

    Console.WriteLine($"i का मान: {i}");

}

while लूप:

एक while लूप तब तक कोड के एक ब्लॉक को निष्पादित करता रहता है जब तक कि एक निर्दिष्ट शर्त सत्य होती है।



int count = 0;

while (count < 3) {

    Console.WriteLine($"काउंट का मान: {count}");

    count++;

}

do-while लूप:

एक do-while लूप while लूप के समान है, सिवाय इसके कि यह लूप बॉडी को शर्त का मूल्यांकन करने से पहले कम से कम एक बार निष्पादित करता है।



int j = 0;

do {

    Console.WriteLine($"j का मान: {j}");

    j++;

} while (j < 2);

C# में क्लास और ऑब्जेक्ट क्या हैं और कैसे बनाएं?

क्लास एक ब्लूप्रिंट या टेम्पलेट है जिसका उपयोग ऑब्जेक्ट बनाने के लिए किया जाता है। एक ऑब्जेक्ट एक क्लास का एक इंस्टेंस है। क्लास में डेटा (फ़ील्ड या प्रॉपर्टीज) और व्यवहार (विधियाँ या मेथड्स) शामिल होते हैं।



class Car {

    public string Make { get; set; }

    public string Model { get; set; }

    public void StartEngine() {

        Console.WriteLine("इंजन शुरू हो गया।");

    }

}

class Program {

    static void Main(string[] args) {

        Car myCar = new Car();

        myCar.Make = "होंडा";

        myCar.Model = "सिविक";

        Console.WriteLine($"कार: {myCar.Make} {myCar.Model}");

        myCar.StartEngine();

    }

}

C# में इनहेरिटेंस क्या है और कैसे काम करता है?

इनहेरिटेंस एक ऐसा तंत्र है जो एक क्लास (व्युत्पन्न क्लास या चाइल्ड क्लास) को किसी अन्य क्लास (आधार क्लास या पैरेंट क्लास) की प्रॉपर्टीज और मेथड्स को इनहेरिट करने की अनुमति देता है। यह कोड पुन: प्रयोज्यता को बढ़ावा देता है।



class Animal {

    public string Name { get; set; }

    public void MakeSound() {

        Console.WriteLine("एक जानवर आवाज करता है।");

    }

}

class Dog : Animal {

    public void Bark() {

        Console.WriteLine("भौं भौं!");

    }

}

class Program {

    static void Main(string[] args) {

        Dog myDog = new Dog();

        myDog.Name = "बूज़र";

        myDog.MakeSound(); // एनिमल क्लास से इनहेरिटेड मेथड

        myDog.Bark();       // डॉग क्लास का अपना मेथड

    }

}

C# में पॉलिमॉर्फिज़म क्या है और कैसे काम करता है?

पॉलिमॉर्फिज़म का अर्थ है "कई रूप"। प्रोग्रामिंग में, यह एक ही इंटरफ़ेस का उपयोग करके विभिन्न प्रकार की वस्तुओं को दर्शाने की क्षमता को संदर्भित करता है। C# में इसे मेथड ओवरराइडिंग और मेथड ओवरलोडिंग के माध्यम से प्राप्त किया जा सकता है।



class Shape {

    public virtual void Draw() {

        Console.WriteLine("एक आकार बनाना।");

    }

}

class Circle : Shape {

    public override void Draw() {

        Console.WriteLine("एक वृत्त बनाना।");

    }

}

class Rectangle : Shape {

    public override void Draw() {

        Console.WriteLine("एक आयत बनाना।");

    }

}

class Program {

    static void Main(string[] args) {

        Shape circle = new Circle();

        Shape rectangle = new Rectangle();

        circle.Draw();    // आउटपुट: एक वृत्त बनाना।

        rectangle.Draw(); // आउटपुट: एक आयत बनाना।

    }

}

C# में फाइल कैसे पढ़ें और लिखें?

C# आपको System.IO नेमस्पेस में क्लासेस का उपयोग करके फाइलों को पढ़ने और लिखने की अनुमति देता है।

फाइल पढ़ना:



try {

    string fileContent = File.ReadAllText("example.txt");

    Console.WriteLine($"फ़ाइल सामग्री:\n{fileContent}");

} catch (FileNotFoundException) {

    Console.WriteLine("फ़ाइल नहीं मिली।");

} catch (IOException ex) {

    Console.WriteLine($"फ़ाइल पढ़ने में त्रुटि: {ex.Message}");

}

फाइल लिखना:



try {

    string textToWrite = "यह टेक्स्ट फाइल में लिखा जाएगा।";

    File.WriteAllText("output.txt", textToWrite);

    Console.WriteLine("टेक्स्ट सफलतापूर्वक फाइल में लिखा गया।");

} catch (IOException ex) {

    Console.WriteLine($"फ़ाइल लिखने में त्रुटि: {ex.Message}");

}

C# में स्ट्रीम रीडर और स्ट्रीम राइटर कैसे उपयोग करें?

StreamReader और StreamWriter का उपयोग टेक्स्ट फ़ाइलों को पढ़ने और लिखने के लिए अधिक उन्नत नियंत्रण प्रदान करता है।

स्ट्रीम रीडर का उपयोग करना:



try {

    using (StreamReader reader = new StreamReader("example.txt")) {

        string line;

        while ((line = reader.ReadLine()) != null) {

            Console.WriteLine(line);

        }

    }

} catch (FileNotFoundException) {

    Console.WriteLine("फ़ाइल नहीं मिली।");

} catch (IOException ex) {

    Console.WriteLine($"फ़ाइल पढ़ने में त्रुटि: {ex.Message}");

}

स्ट्रीम राइटर का उपयोग करना:



try {

    using (StreamWriter writer = new StreamWriter("output.txt", true)) { // true अपेंड करने के लिए, false ओवरराइट करने के लिए

        writer.WriteLine("यह स्ट्रीम राइटर का उपयोग करके जोड़ा गया टेक्स्ट है।");

    }

    Console.WriteLine("टेक्स्ट सफलतापूर्वक फाइल में जोड़ा गया।");

} catch (IOException ex) {

    Console.WriteLine($"फ़ाइल लिखने में त्रुटि: {ex.Message}");

}

C# में सीरियलाइजेशन और डीसियरियलाइजेशन कैसे करें?

सीरियलाइजेशन ऑब्जेक्ट की स्थिति को एक ऐसे प्रारूप में परिवर्तित करने की प्रक्रिया है जिसे संग्रहीत या प्रसारित किया जा सकता है। डीसियरियलाइजेशन उस प्रारूप से ऑब्जेक्ट को वापस बनाने की प्रक्रिया है।



[Serializable]

class Person {

    public string Name { get; set; }

    public int Age { get; set; }

}

class Program {

    static void Main(string[] args) {

        Person person = new Person { Name = "एलिस", Age = 30 };

        // सीरियलाइजेशन

        using (FileStream fs = new FileStream("person.dat", FileMode.Create)) {

            BinaryFormatter formatter = new BinaryFormatter();

            formatter.Serialize(fs, person);

            Console.WriteLine("ऑब्जेक्ट को सीरियलाइज किया गया।");

        }

        // डीसियरियलाइजेशन

        using (FileStream fs = new FileStream("person.dat", FileMode.Open)) {

            BinaryFormatter formatter = new BinaryFormatter();

            Person deserializedPerson = (Person)formatter.Deserialize(fs);

            Console.WriteLine($"डीसियरियलाइज्ड व्यक्ति: नाम = {deserializedPerson.Name}, आयु = {deserializedPerson.Age}");

        }

    }

}

ध्यान दें: सीरियलाइजेबल बनाने के लिए क्लास को [Serializable] विशेषता के साथ चिह्नित किया जाना चाहिए।

C# में डेटाबेस कनेक्शन कैसे स्थापित करें?

C# में डेटाबेस कनेक्शन स्थापित करने के लिए, आपको आमतौर पर System.Data.SqlClient (SQL सर्वर के लिए), System.Data.Odbc, या System.Data.OleDb जैसे नेमस्पेस में क्लासेस का उपयोग करने की आवश्यकता होती है। यहां SQL सर्वर के साथ कनेक्शन स्थापित करने का एक उदाहरण दिया गया है:



using (SqlConnection connection = new SqlConnection("Server=your_server_name;Database=your_database_name;User ID=your_user_id;Password=your_password;")) {

    try {

        connection.Open();

        Console.WriteLine("डेटाबेस से सफलतापूर्वक कनेक्ट किया गया।");

    } catch (Exception ex) {

        Console.WriteLine($"डेटाबेस कनेक्शन में त्रुटि: {ex.Message}");

    } finally {

        if (connection.State == ConnectionState.Open) {

            connection.Close();

            Console.WriteLine("डेटाबेस कनेक्शन बंद कर दिया गया।");

        }

    }

}

कनेक्शन स्ट्रिंग को अपनी डेटाबेस सेटिंग से बदलना सुनिश्चित करें।

C# में एसक्यूएल क्वेरी कैसे चलाएं?

डेटाबेस से कनेक्ट होने के बाद, आप SqlCommand क्लास का उपयोग करके SQL क्वेरी चला सकते हैं।



using (SqlConnection connection = new SqlConnection("Server=your_server_name;Database=your_database_name;User ID=your_user_id;Password=your_password;")) {

    try {

        connection.Open();

        string query = "SELECT * FROM Users";

        using (SqlCommand command = new SqlCommand(query, connection)) {

            using (SqlDataReader reader = command.ExecuteReader()) {

                while (reader.Read()) {

                    Console.WriteLine($"उपयोगकर्ता आईडी: {reader["UserId"]}, नाम: {reader["Name"]}");

                }

            }

        }

    } catch (Exception ex) {

        Console.WriteLine($"एसक्यूएल क्वेरी निष्पादित करने में त्रुटि: {ex.Message}");

    }

}

C# में डेटासेट और डेटा टेबल कैसे उपयोग करें?

DataSet और DataTable क्लासेस का उपयोग डेटाबेस से डेटा को मेमोरी में संग्रहीत और हेरफेर करने के लिए किया जाता है।



using (SqlConnection connection = new SqlConnection("Server=your_server_name;Database=your_database_name;User ID=your_user_id;Password=your_password;")) {

    try {

        connection.Open();

        string query = "SELECT * FROM Products";

        SqlDataAdapter adapter = new SqlDataAdapter(query, connection);

        DataSet dataSet = new DataSet();

        adapter.Fill(dataSet, "Products");

        foreach (DataRow row in dataSet.Tables["Products"].Rows) {

            Console.WriteLine($"उत्पाद आईडी: {row["ProductId"]}, नाम: {row["ProductName"]}, मूल्य: {row["Price"]}");

        }

    } catch (Exception ex) {

        Console.WriteLine($"डेटासेट और डेटा टेबल का उपयोग करने में त्रुटि: {ex.Message}");

    }

}

C# में वेब एप्लिकेशन कैसे बनाएं?

C# का उपयोग ASP.NET और ASP.NET Core जैसे फ्रेमवर्क का उपयोग करके वेब एप्लिकेशन बनाने के लिए किया जा सकता है। ये फ्रेमवर्क वेब डेवलपमेंट के लिए विभिन्न सुविधाएँ और पैटर्न प्रदान करते हैं।

ASP.NET विभिन्न मॉडलों का समर्थन करता है, जिसमें ASP.NET वेब फॉर्म और ASP.NET MVC शामिल हैं। ASP.NET कोर एक आधुनिक, क्रॉस-प्लेटफ़ॉर्म फ्रेमवर्क है जिसका उपयोग क्लाउड-आधारित और इंटरनेट से जुड़ी एप्लिकेशन बनाने के लिए किया जाता है।

C# में MVC फ्रेमवर्क कैसे उपयोग करें?

ASP.NET MVC (मॉडल-व्यू-कंट्रोलर) एक आर्किटेक्चरल पैटर्न है जिसका उपयोग वेब एप्लिकेशन विकसित करने के लिए किया जाता है। यह एप्लिकेशन को तीन परस्पर जुड़े भागों में विभाजित करता है:

  • मॉडल: एप्लिकेशन का डेटा और व्यावसायिक तर्क का प्रतिनिधित्व करता है।
  • व्यू: उपयोगकर्ता इंटरफ़ेस को प्रदर्शित करता है (आमतौर पर HTML और CSS)।
  • कंट्रोलर: उपयोगकर्ता इनपुट को संभालता है और मॉडल और व्यू के बीच मध्यस्थ के रूप में कार्य करता है।

ASP.NET MVC एप्लिकेशन बनाने के लिए, आप विज़ुअल स्टूडियो में एक नया ASP.NET वेब एप्लिकेशन प्रोजेक्ट बना सकते हैं और MVC टेम्पलेट का चयन कर सकते हैं। फिर आप अपने मॉडल, व्यू और कंट्रोलर बना सकते हैं और राउटिंग को कॉन्फ़िगर कर सकते हैं।

C# में वेब एपीआई कैसे बनाएं?

ASP.NET कोर का उपयोग करके वेब एपीआई बनाना सीधा है। वेब एपीआई ऐसे एंडपॉइंट्स प्रदान करते हैं जो HTTP अनुरोधों के माध्यम से डेटा और कार्यक्षमता को उजागर करते हैं।



// कंट्रोलर

[Route("api/[controller]")]

[ApiController]

public class ProductsController : ControllerBase {

    [HttpGet]

    public ActionResult<IEnumerable<Product>> GetProducts() {

        // डेटाबेस से उत्पादों को प्राप्त करने का तर्क

        var products = new List<Product>() {

            new Product { Id = 1, Name = "उत्पाद 1", Price = 10.00 },

            new Product { Id = 2, Name = "उत्पाद 2", Price = 20.00 }

        };

        return Ok(products);

    }

    // उत्पाद मॉडल

    public class Product {

        public int Id { get; set; }

        public string Name { get; set; }

        public decimal Price { get; set; }

    }

}

C# में त्रुटि हैंडलिंग कैसे करें?

त्रुटि हैंडलिंग एक प्रोग्राम के सामान्य प्रवाह को बाधित किए बिना रनटाइम त्रुटियों (अपवादों) को संभालने की प्रक्रिया है। C# try-catch ब्लॉक का उपयोग करके अपवाद हैंडलिंग प्रदान करता है।

C# में try-catch ब्लॉक कैसे उपयोग करें?

try ब्लॉक में कोड होता है जिसमें अपवाद उत्पन्न होने की संभावना होती है। यदि try ब्लॉक के भीतर एक अपवाद होता है, तो निष्पादन तुरंत संबंधित catch ब्लॉक में स्थानांतरित हो जाता है।



try {

    int result = 10 / 0; // यह एक DivideByZeroException उत्पन्न करेगा

    Console.WriteLine($"परिणाम: {result}");

} catch (DivideByZeroException ex) {

    Console.WriteLine($"शून्य से भागने की त्रुटि: {ex.Message}");

} catch (Exception ex) {

    Console.WriteLine($"एक सामान्य त्रुटि हुई: {ex.Message}");

} finally {

    Console.WriteLine("ट्राई-कैच ब्लॉक का अंत।");

}

वैकल्पिक finally ब्लॉक में कोड होता है जो try ब्लॉक से बाहर निकलने के बाद हमेशा निष्पादित होता है, चाहे कोई अपवाद हुआ हो या नहीं।

C# में कस्टम एक्सेप्शन कैसे बनाएं?

आप Exception क्लास से इनहेरिट करके अपने स्वयं के कस्टम एक्सेप्शन बना सकते हैं। यह आपको विशिष्ट त्रुटि परिदृश्यों के लिए अधिक सार्थक अपवाद प्रकार बनाने की अनुमति देता है।



public class InsufficientFundsException : Exception {

    public InsufficientFundsException(string message) : base(message) {

    }

}

class Account {

    public decimal Balance { get; private set; }

    public Account(decimal initialBalance) {

        Balance = initialBalance;

    }

    public void Withdraw(decimal amount) {

        if (amount > Balance) {

            throw new InsufficientFundsException("अपर्याप्त धनराशि।");

        }

        Balance -= amount;

    }

}

class Program {

    static void Main(string[] args) {

        Account account = new Account(100);

        try {

            account.Withdraw(150);

        } catch (InsufficientFundsException ex) {

            Console.WriteLine($"त्रुटि: {ex.Message}");

        }

    }

}

C# में मल्टीथ्रेडिंग क्या है और कैसे उपयोग करें?

मल्टीथ्रेडिंग एक ही समय में एक प्रोग्राम के भीतर कई थ्रेड्स को निष्पादित करने की क्षमता है। यह एप्लिकेशन की प्रतिक्रियाशीलता और प्रदर्शन को बेहतर बना सकता है।

C# में थ्रेड कैसे बनाएं और कैसे उपयोग करें?

आप System.Threading.Thread क्लास का उपयोग करके C# में एक नया थ्रेड बना सकते हैं।



using System.Threading;

class Program {

    public static void MyTask() {

        Console.WriteLine($"MyTask थ्रेड पर चल रहा है: {Thread.CurrentThread.ManagedThreadId}");

        Thread.Sleep(2000); // 2 सेकंड के लिए स्लीप

        Console.WriteLine("MyTask समाप्त।");

    }

    static void Main(string[] args) {

        Console.WriteLine($"मुख्य थ्रेड पर चल रहा है: {Thread.CurrentThread.ManagedThreadId}");

        Thread newThread = new Thread(new ThreadStart(MyTask));

        newThread.Start();

        // मुख्य थ्रेड कुछ और काम कर सकता है

        Console.WriteLine("मुख्य थ्रेड जारी है।");

        // नए थ्रेड के समाप्त होने की प्रतीक्षा करें (वैकल्पिक)

        newThread.Join();

        Console.WriteLine("मुख्य थ्रेड समाप्त।");

    }

}

C# में सिंक्रोनाइजेशन कैसे करें?

जब कई थ्रेड्स एक ही संसाधनों तक पहुंचते हैं, तो डेटा भ्रष्टाचार को रोकने के लिए आपको उनकी पहुंच को सिंक्रनाइज़ करने की आवश्यकता हो सकती है। C# सिंक्रनाइजेशन के लिए विभिन्न तंत्र प्रदान करता है, जैसे कि lock स्टेटमेंट और Monitor क्लास।



using System.Threading;

class Counter {

    private int count = 0;

    private object lockObject = new object();

    public void Increment() {

        lock (lockObject) {

            count++;

            Console.WriteLine($"काउंट बढ़ाया गया: {count}, थ्रेड: {Thread.CurrentThread.ManagedThreadId}");

        }

    }

    public int GetCount() {

        lock (lockObject) {

            return count;

        }

    }

}

class Program {

    static void Main(string[] args) {

        Counter counter = new Counter();

        Thread[] threads = new Thread[5];

        for (int i = 0; i < 5; i++) {

            threads[i] = new Thread(counter.Increment);

            threads[i].Start();

        }

        foreach (Thread thread in threads) {

            thread.Join();

        }

        Console.WriteLine($"अंतिम काउंट: {counter.GetCount()}");

    }

}

lock स्टेटमेंट सुनिश्चित करता है कि एक समय में केवल एक थ्रेड कोड के एक निश्चित ब्लॉक को निष्पादित कर सकता है, इस मामले में, Increment विधि के भीतर।

C# में प्रॉपर्टीज क्या हैं?

प्रॉपर्टीज क्लास के फ़ील्ड तक पहुंचने के लिए एक लचीला तंत्र प्रदान करती हैं। वे आपको फ़ील्ड के मान को पढ़ने (गेट एक्सेसर) और लिखने (सेट एक्सेसर) के लिए कोड प्रदान करने की अनुमति देती हैं, जिससे आप डेटा पहुंच को नियंत्रित कर सकते हैं।



class Person {

    private string _name;

    public string Name {

        get { return _name; }

        set {

            if (!string.IsNullOrEmpty(value)) {

                _name = value;

            }

        }

    }

}

class Program {

    static void Main(string[] args) {

        Person person = new Person();

        person.Name = "बॉब";

        Console.WriteLine(person.Name); // आउटपुट: बॉब

        person.Name = "";

        Console.WriteLine(person.Name); // आउटपुट: बॉब (क्योंकि सेट एक्सेसर में वैलिडेशन है)

    }

}

C# में इवेंट्स और डेलीगेट्स क्या हैं?

इवेंट्स आपको किसी क्लास या ऑब्जेक्ट को कुछ होने पर अन्य क्लासेज या ऑब्जेक्ट्स को सूचित करने की अनुमति देते हैं। डेलीगेट्स मेथड्स के लिए टाइप-सेफ फंक्शन पॉइंटर्स हैं। इवेंट्स को लागू करने के लिए डेलीगेट्स का उपयोग किया जाता है।



public delegate void EventHandler(string message);

class Publisher {

    public event EventHandler OnMessagePublished;

    public void Publish(string message) {

        Console.WriteLine($"प्रकाशक: संदेश प्रकाशित कर रहा है - {message}");

        OnMessagePublished?.Invoke(message);

    }

}

class Subscriber {

    public void HandleMessage(string message) {

        Console.WriteLine($"ग्राहक: संदेश प्राप्त हुआ - {message}");

    }

}

class Program {

    static void Main(string[] args) {

        Publisher publisher = new Publisher();

        Subscriber subscriber1 = new Subscriber();

        Subscriber subscriber2 = new Subscriber();

        publisher.OnMessagePublished += subscriber1.HandleMessage;

        publisher.OnMessagePublished += subscriber2.HandleMessage;

        publisher.Publish("नमस्ते!");

    }

}

C# में LINQ क्या है और कैसे उपयोग करें?

LINQ (लैंग्वेज इंटीग्रेटेड क्वेरी) C# की एक शक्तिशाली विशेषता है जो आपको विभिन्न डेटा स्रोतों, जैसे कि संग्रह, डेटाबेस, XML और अन्य, से डेटा को क्वेरी करने की अनुमति देती है, उसी सिंटैक्स का उपयोग करके।



using System.Linq;

using System.Collections.Generic;

class Program {

    static void Main(string[] args) {

        List<int> numbers = new List<int>() { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

        // LINQ क्वेरी का उपयोग करके सम संख्याओं का चयन करें

        var evenNumbers = from num in numbers

                          where num % 2 == 0

                          select num;

        Console.WriteLine("सम संख्याएँ:");

        foreach (int num in evenNumbers) {

            Console.WriteLine(num);

        }

        // लैम्ब्डा एक्सप्रेशन और मेथड सिंटैक्स का उपयोग करके

        var oddNumbers = numbers.Where(n => n % 2 != 0).Select(n => n);

        Console.WriteLine("\nविषम संख्याएँ:");

        foreach (int num in oddNumbers) {

            Console.WriteLine(num);

        }

    }

}

टिप्पणियाँ

इस ब्लॉग से लोकप्रिय पोस्ट

JavaScript basic to advance guide

Tool Room Lath Machine: A Complete Guide

html Post Creator introduction