Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C#

C# 7.0 में डीकंस्ट्रक्टर्स क्या हैं?

C# 7.0 ने डीकंस्ट्रक्टर्स पेश किए जो किसी ऑब्जेक्ट को उसके घटक भागों में विघटित (deconstruct) करने की अनुमति देते हैं। यह नए टुपल सिंटैक्स का हिस्सा है और फंक्शनल प्रोग्रामिंग से प्रेरित है।

Deconstruct मेथड

एक क्लास या स्ट्रक्ट में Deconstruct मेथड होता है जिसमें out पैरामीटर्स होते हैं:

public class Employee {
    public Employee(string employeeName, string firstName, string lastName) {
        EmployeeName = employeeName;
        FirstName = firstName;
        LastName = lastName;
    }
    
    public string EmployeeName { get; }
    public string FirstName { get; }
    public string LastName { get; }
    
    // डीकंस्ट्रक्टर
    public void Deconstruct(out string employeeName, out string firstName, out string lastName) {
        employeeName = EmployeeName;
        firstName = FirstName;
        lastName = LastName;
    }
}

उपयोग: टुपल डीकंस्ट्रक्शन सिंटैक्स

class Program {
    public static void Main() {
        Employee employee = new Employee("emp", "fname", "lname");
        
        // डीकंस्ट्रक्शन - ऑब्जेक्ट को व्यक्तिगत वेरिएबल्स में विभाजित
        (string EName, string Fname, string Lname) = employee;
        
        // या var के साथ
        var (EName, Fname, Lname) = employee;
        
        // या पहले से डिक्लेयर्ड वेरिएबल्स में
        string eName, fName, lName;
        (eName, fName, lName) = employee;
        
        System.Console.WriteLine(EName);  // emp
        System.Console.WriteLine(Fname);  // fname
        System.Console.WriteLine(Lname);  // lname
        Console.ReadLine();
    }
}

आउटपुट

emp
fname
lname

एकाधिक Deconstruct मेथड्स (ओवरलोडिंग)

एक ही क्लास में अलग-अलग पैरामीटर काउंट/टाइप्स के साथ एकाधिक Deconstruct मेथड्स हो सकते हैं:

public class Person {
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public int Age { get; set; }
    public string Address { get; set; }
    
    // 2 पैरामीटर्स
    public void Deconstruct(out string firstName, out string lastName) {
        firstName = FirstName;
        lastName = LastName;
    }
    
    // 3 पैरामीटर्स
    public void Deconstruct(out string firstName, out string lastName, out int age) {
        firstName = FirstName;
        lastName = LastName;
        age = Age;
    }
    
    // 4 पैरामीटर्स
    public void Deconstruct(out string firstName, out string lastName, out int age, out string address) {
        firstName = FirstName;
        lastName = LastName;
        age = Age;
        address = Address;
    }
}

// उपयोग
var (first, last) = person;
var (first, last, age) = person;
var (first, last, age, addr) = person;

बिल्ट-इन टाइप्स के लिए डीकंस्ट्रक्शन

C# 7.0+ में कई बिल्ट-इन टाइप्स डीकंस्ट्रक्शन का समर्थन करते हैं:

// KeyValuePair
var (key, value) = keyValuePair;

// Tuple (नया ValueTuple)
var (x, y, z) = (1, 2, 3);

// Dictionary एंट्री
foreach (var (key, value) in dictionary) { ... }

// ValueTuple रिटर्न करने वाले मेथड्स
public (int Sum, int Count) Calculate(int[] numbers) {
    return (numbers.Sum(), numbers.Length);
}

var (sum, count) = Calculate(new[] {1, 2, 3});

डीकंस्ट्रक्टर vs डिस्ट्रक्टर

डीकंस्ट्रक्टर (Deconstructor)डिस्ट्रक्टर (Destructor/Finalizer)
Deconstruct मेथड~ClassName()
ऑब्जेक्ट को भागों में विभाजित करता हैक्लीनअप लॉजिक चलाता है
out पैरामीटर्स का उपयोगकोई पैरामीटर नहीं
टुपल सिंटैक्स के लिएअनमैनेज्ड रिसोर्स रिलीज़ के लिए
  1. - C# में इवेंट्स क्या हैं

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

  1. - C# में रेगुलर एक्सप्रेशन्स क्या हैं?

    रेगुलर एक्सप्रेशन एक पैटर्न होता है जिसे इनपुट टेक्स्ट के विरुद्ध मिलान किया जा सकता है। .NET फ्रेमवर्क एक रेगुलर एक्सप्रेशन इंजन प्रदान करता है जो ऐसे मिलान की अनुमति देता है। एक पैटर्न में एक या अधिक कैरेक्टर लिटरल्स, ऑपरेटर्स या कंस्ट्रक्ट्स होते हैं।उदाहरण के लिए, यदि आप उन शब्दों से मिलान करना

  1. - Java 9 में कॉम्पैक्ट स्ट्रिंग्स क्या हैं?

    कॉम्पैक्ट स्ट्रिंग्स अवलोकन Java 9 से, JVM कॉम्पैक्ट स्ट्रिंग्स नामक एक नई सुविधा का उपयोग करके स्ट्रिंग्स को अनुकूलित करता है। char[] ऐरे के बजाय, एक स्ट्रिंग को byte[] ऐरे के रूप में दर्शाया जा सकता है। हम UTF-16 या Latin-1 का उपयोग करके प्रति कैरेक्टर एक या दो बाइट्स उत्पन्न कर सकते हैं। यदि JVM