作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
<分区>
我有以下示例类:
public sealed class MyDictKey
{
public int Type { get; }
public int SubType { get; }
public MyDictKey(int type, int subType) // both can only be positive values
{
Type = type;
SubType = subType;
}
public override bool Equals(object obj)
{
if (obj is MyDictKey other)
{
bool typeEqual = other.Type == Type;
bool subTypeEqual = other.SubType == -1 || SubType == -1 || other.SubType == SubType;
return typeEqual && subTypeEqual;
}
return false;
}
public override int GetHashCode()
{
unchecked
{
int hash = 17;
hash = hash * 23 + Type.GetHashCode();
return hash;
}
}
}
以及以下测试(NUnit,如果有人感兴趣的话):
[Test]
public void CalculatorTest()
{
Dictionary<MyDictKey, string> myTypeProcessors = new Dictionary<MyDictKey, string>();
myTypeProcessors.Add(new MyDictKey(10, 20), "10.20_processor");
myTypeProcessors.Add(new MyDictKey(3, 4), "3.4_processor");
myTypeProcessors.Add(new MyDictKey(4, -1), "4.any_processor");
// -1 means it can process "any" subtype
for (int i = 0; i < 1000; i++) // should work for any positive number
{
bool canGet = myTypeProcessors.TryGetValue(new MyDictKey(4, i), out string value);
Assert.IsTrue(canGet);
Assert.That(value, Is.EqualTo("4.any_processor"));
bool canGet2 = myTypeProcessors.TryGetValue(new MyDictKey(10, i), out string value2);
if (i == 20)
{
Assert.IsTrue(canGet2);
Assert.That(value2, Is.EqualTo("10.20_processor"));
}
else
{
Assert.IsFalse(canGet2);
}
}
}
我能否仅通过使用 GetHashCode 以某种方式达到相同的机制?因为这样,如果只有 SubType 不同,字典的 TryGetValue 将始终调用 Equals 方法。重要的是新方法不能比原来的方法慢。
我想到的是位运算符;或者有什么神奇的数学公式吗?
提前谢谢你。
我尝试使用正则表达式来验证输入字段。我所说的“ clown ”字符是“?”和 '*'。这是我的 java 正则表达式: "^$|[^\\*\\s]{2,}|[^\\*\\s]{2,}[\\*\\?]|
此 Joker 非彼 Joker,本文将要介绍的 Joker 是一门使用 Go 编写的 Clojure 解释型方言,同时也是一个 Clojure(Script) linter。 Joker 代
在 Rummikub 游戏中,对于那些不知道的人来说,你有 4 种颜色的瓷砖,上面有 13 个不同的数字(所以 4 x 13 = 52 个独特的瓷砖),你必须用它们来分组。有两种类型的组: 不同的颜色
这个问题在这里已经有了答案: Equals, GetHashCode, EqualityComparers and fuzzy equality (3 个答案) 关闭 4 年前。 我有以下示例类:
我正在读出一个数据库表,并排除列中具有给定值的一些行。 但我无法获得为我获取正确号码的查询。我怀疑它仍然计算 kampanje_xxxxx 行。我使用 % 来排除。 $sql = "SELEC
我是一名优秀的程序员,十分优秀!