gpt4 book ai didi

c# - C#:优化字典访问(键结构中的哈希)

转载 作者:太空宇宙 更新时间:2023-11-03 17:46:20 24 4
gpt4 key购买 nike

因此,我需要在C#中创建一个结构,该结构将充当(很大)字典的键,如下所示:

private readonly IDictionary<KeyStruct, string> m_Invitations;


问题是,我真的需要一个结构用作键,因为只能通过两个单独的数据项来标识条目,其中一个可以是空(不仅是空!)字符串。

我需要在该结构上实现什么?您将如何创建哈希?哈希冲突(偶发)会严重影响性能还是可以忽略不计?

我问,因为这是“内循环”代码。

最佳答案

如果您有共享工具,则可以使用Alt-Ins-> Equality成员生成这些方法。

这是您为KeyStruct生成的代码:

public struct KeyStruct : IEquatable<KeyStruct>
{
public string Value1 { get; private set; }
public long Value2 { get; private set; }

public KeyStruct(string value1, long value2)
: this()
{
Value1 = value1;
Value2 = value2;
}

public bool Equals(KeyStruct other)
{
return Equals(other.Value1, Value1) && other.Value2 == Value2;
}

public override bool Equals(object obj)
{
if (ReferenceEquals(null, obj)) return false;
if (obj.GetType() != typeof (KeyStruct)) return false;
return Equals((KeyStruct) obj);
}

public override int GetHashCode()
{
unchecked
{
return ((Value1 != null ? Value1.GetHashCode() : 0)*397) ^ Value2.GetHashCode();
}
}

public static bool operator ==(KeyStruct left, KeyStruct right)
{
return left.Equals(right);
}

public static bool operator !=(KeyStruct left, KeyStruct right)
{
return !left.Equals(right);
}
}

关于c# - C#:优化字典访问(键结构中的哈希),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3079759/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com