Есть ли какой-нибудь способ открыть файл 10 ГБ в Колаборатории?

Вам не нужно создавать свой собственный словарь - вам нужно создать свою собственную реализацию IEqualityComparer, которая использует личность для хэширования и равенства. Я не думаю , что такая вещь существует в структуре, но ее достаточно легко построить из-за RuntimeHelpers.GetHashCode .

public sealed class IdentityEqualityComparer : IEqualityComparer
    where T : class
{
    public int GetHashCode(T value)
    {
        return RuntimeHelpers.GetHashCode(value);
    }

    public bool Equals(T left, T right)
    {
        return left == right; // Reference identity comparison
    }
}

I 'ограничено T как ссылочный тип, чтобы вы получили объекты в словаре; если вы использовали это для типов значений, вы могли бы получить некоторые нечетные результаты. (Я не знаю, как это работает, я подозреваю .)

С этим на месте остальное легко. Например:

Dictionary identityDictionary =
    new Dictionary(new IdentityEqualityComparer());

0
задан Reinaldo Chaves 7 May 2019 в 20:57
поделиться