Bird
Raised Fist0
C Sharp (C#)programming~3 mins

Why Dictionary key-value collection in C Sharp (C#)? - Purpose & Use Cases

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
The Big Idea

What if you could find any piece of information instantly, without searching through piles of data?

The Scenario

Imagine you have a huge list of names and phone numbers written on paper. To find a number, you have to flip through every page until you find the right name.

The Problem

This manual search takes a lot of time and you might easily miss or confuse numbers. It's slow and mistakes happen often when you try to find or update information.

The Solution

A dictionary key-value collection works like a super-organized phone book. You give it a name (key), and it instantly gives you the phone number (value). No flipping pages, no confusion.

Before vs After
Before
string[] names = {"Alice", "Bob"};
string[] phones = {"123", "456"};
// To find Bob's number, loop through names until 'Bob' is found
After
var phoneBook = new Dictionary<string, string>();
phoneBook["Alice"] = "123";
phoneBook["Bob"] = "456";
// Get Bob's number instantly: phoneBook["Bob"]
What It Enables

It enables lightning-fast lookups and easy updates, making data handling smooth and error-free.

Real Life Example

Think of a contact app on your phone: when you tap a name, it instantly shows the number because it uses a dictionary-like system behind the scenes.

Key Takeaways

Dictionaries store data as pairs: a key and its value.

They let you find information instantly without searching through everything.

This makes managing and updating data simple and reliable.

Practice

(1/5)
1. What is the main purpose of a Dictionary in C#?
easy
A. To create graphical user interfaces
B. To store data in a sequential list
C. To perform mathematical calculations
D. To store data as key-value pairs for quick access

Solution

  1. Step 1: Understand the Dictionary concept

    A Dictionary stores data as pairs where each key is linked to a value for fast lookup.
  2. Step 2: Compare with other options

    Options B, C, and D describe lists, math, and UI, which are unrelated to Dictionary's purpose.
  3. Final Answer:

    To store data as key-value pairs for quick access -> Option D
  4. Quick Check:

    Dictionary = key-value pairs [OK]
Hint: Remember: Dictionary = keys + values for fast lookup [OK]
Common Mistakes:
  • Confusing Dictionary with List
  • Thinking Dictionary stores only values
  • Assuming Dictionary is for UI or math
2. Which of the following is the correct way to add a key-value pair to a Dictionary<int, string> named dict?
easy
A. dict.Add(1, "apple");
B. dict.Insert(1, "apple");
C. dict["1"] = "apple";
D. dict.Put(1, "apple");

Solution

  1. Step 1: Recall Dictionary methods

    The method to add a new key-value pair is Add(key, value).
  2. Step 2: Check options

    Only dict.Add(1, "apple"); uses Add. dict[1] = "apple"; uses indexer which sets or updates but is not the method to add explicitly.
  3. Final Answer:

    dict.Add(1, "apple"); -> Option A
  4. Quick Check:

    Add() method adds key-value pair [OK]
Hint: Use Add() to insert new pairs, indexer to update [OK]
Common Mistakes:
  • Using Insert or Put which don't exist
  • Confusing Add() with indexer for adding
  • Trying to add with wrong method name
3. What will be the output of this C# code?
var dict = new Dictionary<int, string>();
dict.Add(1, "one");
dict[2] = "two";
Console.WriteLine(dict[1] + ", " + dict[2]);
medium
A. two, one
B. 1, 2
C. one, two
D. Runtime error

Solution

  1. Step 1: Understand dictionary additions

    Key 1 is added with value "one" using Add(). Key 2 is set to "two" using indexer.
  2. Step 2: Check output of Console.WriteLine

    It prints values for keys 1 and 2 joined by comma: "one, two".
  3. Final Answer:

    one, two -> Option C
  4. Quick Check:

    dict[1] = one, dict[2] = two [OK]
Hint: Indexer sets or updates; Add inserts new pairs [OK]
Common Mistakes:
  • Confusing keys with values in output
  • Expecting keys printed instead of values
  • Thinking indexer causes error if key missing
4. What is wrong with this code snippet?
var dict = new Dictionary<int, string>();
dict.Add(1, "apple");
dict.Add(1, "banana");
medium
A. It will compile and run without errors
B. It causes a runtime exception due to duplicate key
C. It overwrites the first value with the second
D. It causes a compile-time error

Solution

  1. Step 1: Understand Add() behavior with duplicate keys

    Adding a key that already exists causes a runtime exception.
  2. Step 2: Check code behavior

    Second Add with key 1 throws an ArgumentException at runtime.
  3. Final Answer:

    It causes a runtime exception due to duplicate key -> Option B
  4. Quick Check:

    Duplicate keys cause runtime error [OK]
Hint: Add() fails if key exists; use indexer to overwrite [OK]
Common Mistakes:
  • Assuming Add overwrites existing key
  • Expecting compile-time error instead of runtime
  • Confusing Add with indexer behavior
5. Given a list of user IDs and names:
var users = new List<(int id, string name)> { (1, "Alice"), (2, "Bob"), (3, "Charlie") };

Which code correctly creates a Dictionary<int, string> mapping IDs to names using a dictionary comprehension style?
hard
A. var dict = users.ToDictionary(u => u.id, u => u.name);
B. var dict = new Dictionary<int, string>(); foreach(var u in users) dict.Add(u.name, u.id);
C. var dict = users.Select(u => new { u.id, u.name }).ToList();
D. var dict = new Dictionary<string, int>(); foreach(var u in users) dict[u.id] = u.name;

Solution

  1. Step 1: Understand ToDictionary usage

    ToDictionary converts a list to a dictionary by specifying key and value selectors.
  2. Step 2: Check each option

    var dict = users.ToDictionary(u => u.id, u => u.name); correctly maps id to name. var dict = new Dictionary<int, string>(); foreach(var u in users) dict.Add(u.name, u.id); swaps key and value and uses wrong types. var dict = users.Select(u => new { u.id, u.name }).ToList(); creates a list, not dictionary. var dict = new Dictionary<string, int>(); foreach(var u in users) dict[u.id] = u.name; has wrong dictionary types and indexer usage.
  3. Final Answer:

    var dict = users.ToDictionary(u => u.id, u => u.name); -> Option A
  4. Quick Check:

    ToDictionary creates dictionary from list [OK]
Hint: Use ToDictionary with key and value selectors [OK]
Common Mistakes:
  • Swapping key and value in Add
  • Using Select instead of ToDictionary
  • Mismatching dictionary key-value types