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)
| विशेषता | KeyValuePair | Tuple (ValueTuple) |
| प्रकार | स्ट्रक्चर (struct) | स्ट्रक्चर (struct) |
| नेमस्पेस | System.Collections.Generic | System |
| नामित सदस्य | Key, Value | Item1, Item2 (या कस्टम नाम) |
| अपरिवर्तनीयता | अपरिवर्तनीय (immutable) | परिवर्तनीय (mutable) |
| उपयोग | Dictionary, लुकअप टेबल | एकाधिक मान लौटाना, अस्थायी जोड़े |
महत्वपूर्ण बिंदु
KeyValuePair अपरिवर्तनीय (immutable) है - निर्माण के बाद कुंजी/मान नहीं बदल सकते
- यह एक
struct है, इसलिए मान प्रकार (value type) है - नल नहीं हो सकता
Dictionary का अनुक्रम IEnumerable<KeyValuePair<TKey, TValue>> होता है
- JSON सीरियलाइजेशन में यह स्वाभाविक रूप से ऑब्जेक्ट के रूप में सीरियलाइज होता है
- प्रदर्शन के लिए
struct होने के कारण हीप आवंटन नहीं होता