Creating an Application Using C# Dictionary

Welcome! Today, we will explore creating a simple address book application using a C# Dictionary. This task will help you understand how to manipulate a Dictionary in C#, focusing on adding, retrieving, and deleting entries. By the end of this lesson, you'll have a solid grasp of these fundamental operations.

Introducing Methods to Implement

In this task, we will implement three methods to manage our address book:

  • AddContact(string name, string phoneNumber): Adds a new contact. Returns false if the contact already exists; otherwise, it adds the contact and returns true. In this task, let's assume phone numbers do not change, so it's not allowed to overwrite an existing contact's number.
  • GetContact(string name): Retrieves the phone number for a given name. Returns null if the contact does not exist.
  • DeleteContact(string name): Deletes a contact with the given name. Returns true if the contact exists and is deleted, false otherwise.

Let's break down each method in detail in the next sections.

Step 1: Implementing AddContact

This method adds a new contact to the address book with the given name and phoneNumber. If the contact already exists, it returns false. Otherwise, it adds the contact and returns true.

Question: Why do you think we need to check if the contact already exists?

Answer: To avoid duplicating existing entries. Also, if a contact with the same name already exists, we shouldn't allow overwriting its phone number in this method, as it's only for creation.

Here is the method implementation:

using System;
using System.Collections.Generic;

public class AddressBook
{
    private Dictionary<string, string> contacts;

    public AddressBook()
    {
        contacts = new Dictionary<string, string>();
    }

    public bool AddContact(string name, string phoneNumber)
    {
        if (contacts.ContainsKey(name))
        {
            return false;
        }
        contacts.Add(name, phoneNumber);
        return true;
    }

    public IEnumerable<KeyValuePair<string, string>> GetAllContacts()
    {
        return contacts;
    }
}

public class Program
{
    public static void Main()
    {
        AddressBook addressBook = new AddressBook();
        Console.WriteLine(addressBook.AddContact("Alice", "123-456-7890")); // True
        Console.WriteLine(addressBook.AddContact("Alice", "098-765-4321")); // False
        foreach (var contact in addressBook.GetAllContacts())
        {
            Console.WriteLine($"{contact.Key}: {contact.Value}"); // Alice: 123-456-7890
        }
    }
}

In this method:

  • We verify if the contact already exists using if (contacts.ContainsKey(name)).
  • If it exists, we return false.
  • If it doesn't exist, we add it to our Dictionary using contacts.Add(name, phoneNumber); and return true.
Sign up
Join the 1M+ learners on CodeSignal
Be a part of our community of 1M+ users who develop and demonstrate their skills on CodeSignal