- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我知道当我使用自定义类作为键创建字典时,我提供键时的匹配是通过引用比较完成的。例如:
public class SomeClass
{
public object SomeValue { get; set; }
}
// ....
public static void Main()
{
var dict = new Dictionary<SomeClass, string>();
var key1 = new SomeClass { SomeValue = 30 };
dict[key1] = "30";
Console.WriteLine(dict[key1]); // prints "30"
var key2 = new SomeClass { SomeValue = 30 };
Console.WriteLine(dict[key2]); // prints null
}
SomeClass
中覆盖 Equals(和 ==)会发生什么类(class)?我会在输出的第二行得到“30”吗?
最佳答案
简答
是,如果您覆盖 Equals
和 GetHashCode
方法您的自定义键比较将开始工作。
长答案Dictionary<TKey,TValue>
class 不一定会进行基于引用的比较。它改为使用 IEqualityComparer<TKey>
可以提供给构造函数的实例。如果未提供,则默认值为 EqualityComparer<T>.Default
.EqualityComparer<T>.Default
的过程作品复杂。但总结是
IEquatable<T>
在类型上,如果存在则用于相等 Equals
方法默认为 Object.Equals
因此引用比较 IEqualityComparer<T>
IEquatable<T>
和覆盖 GetHashCode
Equals
和 GetHashCode
==
和
!=
对
TKey
不起作用输入
Dictionary<TKey,TValue>
.
关于.Net 字典和等号的覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4262027/
我有一个代码: $("#button").click(function () { for (var i = 0; i < 4; i++) {
我一直在应该用 YAML 编写的 ansible 剧本中阅读 key1=value1 key2=value2 风格的字典。另一方面,我没有找到任何关于这种格式的文档,而且似乎在某些情况下它对我不起作用
我使用 $(this).attr("href"); 来选择被单击元素的 href 属性值,但我只需要选择最后一个 '= 之后的部分' 符号。 示例: href="index.php?con=123&i
我有一个查询需要 20 秒才能执行,请按照我的查询操作: SELECT MATLIGA.COD_MAT_FAMILIA FROM ORCAMENTOS.dbo.OR_1INSUMOS INSU
我使用 Visual studio 2012 和插件 Visual Assist X 版本。 1916.我有两个问题。 1) 当我写等号 (=) 时,我希望在符号前后自动插入空格(我必须始终在键盘上按
我有一个数据模板 xaml,目前看起来像这样用于报告屏幕
这个问题在这里已经有了答案: 8年前关闭。 Possible Duplicate: When to use the equals sign in a Scala method declaration?
嘿,我不确定为什么会这样。 GA 似乎随机地将等号附加到某些 URL。它们不会以这种方式出现在实时站点上。 我做了一个没有过滤器或其他配置的全新 View ,它仍然会发生。我以前从未见过这种情况,这很
是否可以在“=”表达式中转义 python f 字符串? (Python 3.8 中的新功能) 例如我有以下表达式: def double(x): return x * 2 some_int
是否可以在“=”表达式中转义 python f 字符串? (Python 3.8 中的新功能) 例如我有以下表达式: def double(x): return x * 2 some_int
使用 PHPMailer 5.2.14,电子邮件以文本/html 格式发送。传出的文本每隔 75 个字符就会散布一些等号。 我尝试使用 EOL workaround , 但它没有删除多余的等号: $e
如果 C++ 中包含等号,我如何解析命令行选项?一个例子是: ./testApp --parameter1=value1 我使用以下行来检查参数是否存在: bool cmdOptionExists(c
我在创建带有索引的迭代器时碰巧犯了一个复制粘贴错误,如下所示。 ... 正确的版本应该在索引语句中包含等号而不是 of。 问题不在于如何获取索引。 我感兴趣的是我得到了[Object object],
我正在自动执行 RSA 软 token 转换并将转换字符串传递给 Outlook。我意识到我无法使用批处理将字符串变成 URL 到 outlook 命令行,但这不是我的问题。我的问题是将讨厌的等号转换
我正在关注 Baking Pi剑桥大学的类(class),其中基于 ARMv6 指令集构建了一个简单的操作系统,针对 Raspberry Pi。 到目前为止,我们一直在使用两种通过 ldr 指令将数据
我是一名优秀的程序员,十分优秀!