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

C# में KeyValuePair क्लास का उपयोग


C# में KeyValuePair<TKey, TValue> एक स्ट्रक्चर (struct) है जो एक कुंजी-मान जोड़ी (key-value pair) को दर्शाता है। यह System.Collections.Generic नेमस्पेस में परिभाषित है और आमतौर पर Dictionary के तत्वों को दर्शाने के लिए उपयोग किया जाता है।

उदाहरण: KeyValuePair सूची बनाना और उपयोग करना

using System;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        // KeyValuePair की सूची बनाएं
        var myList = new List>();
        
        // तत्व जोड़ें
        myList.Add(new KeyValuePair("Laptop", 20));
        myList.Add(new KeyValuePair("Desktop", 40));
        myList.Add(new KeyValuePair("Tablet", 60));
        
        Console.WriteLine("KeyValuePair सूची:");
        foreach (var pair in myList)
        {
            Console.WriteLine($"  कुंजी: {pair.Key}, मान: {pair.Value}");
        }
        
        // KeyValuePair को सीधे बनाना (C# 7.0+ टपल सिंटैक्स के साथ भ्रमित न हों)
        var pair1 = new KeyValuePair("India", "New Delhi");
        var pair2 = KeyValuePair.Create("USA", "Washington"); // C# 7.0+
        
        Console.WriteLine($"\nसीधे बनाए गए जोड़े:");
        Console.WriteLine($"  {pair1.Key} - {pair1.Value}");
        Console.WriteLine($"  {pair2.Key} - {pair2.Value}");
    }
}

आउटपुट

KeyValuePair सूची:
  कुंजी: Laptop, मान: 20
  कुंजी: Desktop, मान: 40
  कुंजी: Tablet, मान: 60

सीधे बनाए गए जोड़े:
  India - New Delhi
  USA - Washington

KeyValuePair के मुख्य प्रॉपर्टीज और मेथड्स

सदस्यविवरण
Keyकुंजी प्राप्त करता है (सिर्फ पढ़ने योग्य)
Valueमान प्राप्त करता है (सिर्फ पढ़ने योग्य)
ToString()"[Key, Value]" प्रारूप में स्ट्रिंग प्रतिनिधित्व
Deconstruct()डीस्ट्रक्चरिंग के लिए (C# 7.0+)

Deconstruct का उपयोग (C# 7.0+)

var pair = new KeyValuePair("Product", 100);

// डीस्ट्रक्चरिंग
var (key, value) = pair;
Console.WriteLine($"कुंजी: {key}, मान: {value}"); // कुंजी: Product, मान: 100

// लूप में डीस्ट्रक्चरिंग
foreach (var (k, v) in myList)
{
    Console.WriteLine($"{k}: {v}");
}

Dictionary के साथ उपयोग

var dict = new Dictionary
{
    { "Apple", 50 },
    { "Banana", 20 },
    { "Orange", 30 }
};

// Dictionary स्वाभाविक रूप से KeyValuePair का अनुक्रम है
foreach (KeyValuePair kvp in dict)
{
    Console.WriteLine($"{kvp.Key}: ₹{kvp.Value}");
}

// या var का उपयोग करके
foreach (var kvp in dict)
{
    Console.WriteLine($"{kvp.Key}: ₹{kvp.Value}");
}

KeyValuePair बनाम टपल (Tuple)

विशेषताKeyValuePairTuple (ValueTuple)
प्रकारस्ट्रक्चर (struct)स्ट्रक्चर (struct)
नेमस्पेसSystem.Collections.GenericSystem
नामित सदस्यKey, ValueItem1, Item2 (या कस्टम नाम)
अपरिवर्तनीयताअपरिवर्तनीय (immutable)परिवर्तनीय (mutable)
उपयोगDictionary, लुकअप टेबलएकाधिक मान लौटाना, अस्थायी जोड़े

महत्वपूर्ण बिंदु

  • KeyValuePair अपरिवर्तनीय (immutable) है - निर्माण के बाद कुंजी/मान नहीं बदल सकते
  • यह एक struct है, इसलिए मान प्रकार (value type) है - नल नहीं हो सकता
  • Dictionary का अनुक्रम IEnumerable<KeyValuePair<TKey, TValue>> होता है
  • JSON सीरियलाइजेशन में यह स्वाभाविक रूप से ऑब्जेक्ट के रूप में सीरियलाइज होता है
  • प्रदर्शन के लिए struct होने के कारण हीप आवंटन नहीं होता
  1. - C# में लिंक्ड लिस्ट में नोड खोजना

    C# में System.Collections.Generic.LinkedList<T> क्लास डबल लिंक्ड लिस्ट प्रदान करती है। Find() मेथड का उपयोग करके किसी मान वाला पहला नोड खोजा जा सकता है। उदाहरण: नोड खोजें और उसके बाद नया नोड जोड़ें using System; using System.Collections.Generic; class Program { static void Main() {

  1. - प्रीकंडीशन्स - Java

    उदाहरणpublic void myFun(List myList){ if (myList == null){ throw new IllegalArgumentException(लिस्ट null है); } if (myList.isEmpty()){ throw new IllegalArgumentException(लिस्ट खाली है); } myFun(myList); }myFun नाम का एक void फ़ंक्शन परिभाषित किया गया है जो ऑब्जेक्

  1. - पायथन में पास बाय रेफरेंस बनाम वैल्यू

    पायथन भाषा में सभी पैरामीटर्स (आर्गुमेंट्स) रेफरेंस द्वारा पास किए जाते हैं। इसका मतलब है कि यदि आप किसी फ़ंक्शन के भीतर किसी पैरामीटर को क्या रेफर करता है बदलते हैं, तो परिवर्तन कॉलिंग फ़ंक्शन में भी प्रतिबिंबित होता है। उदाहरण #!/usr/bin/python # फ़ंक्शन परिभाषा यहां है def changeme(mylist):