Хеш-код в словаре <TKey, TValue>

Я играл со словарем и наткнулся на сценарий ниже

public class MyObject
{
    public string I { get; set; }
    public string J { get; set; }
    public string K { get; set; }

    public override int GetHashCode()
    {
        int hashCode = (I+J+K).GetHashCode();
        Debugger.Log(9, "INFO", hashCode.ToString() + System.Environment.NewLine);
        return hashCode;
    }
}
class Program
{
    static void Main(string[] args)
    {
        MyObject obj1 = new MyObject() { I = "Hello", J = "World" };
        MyObject obj2 = new MyObject() { I = "Hello", J = "World" };

        Dictionary<MyObject, string> collection = new Dictionary<MyObject, string>();
        collection.Add(obj1, "1");
        var result = collection[obj2]; // KeyNotFound exception here.
    }
}

У меня есть класс MyObject, который действует как ключ к словарю, и я переопределяю метод GetHashCode, чтобы вернуть хеш-код на основе значений, хранящихся в классе.

Таким образом, когда вышеуказанный код выполняется, оба объекта obj1 и obj2 возвращают один и тот же хэш-код, но все же словарь выдает исключение KeyNotFound.

Есть причина, почему такое поведение?

Ответы на вопрос(2)

Ваш ответ на вопрос