0 0

c# Dictionary.Containskey()问题,hascode() equal() 为真, 但是结果不包含5

  
  ///dictionary 定义
private IDictionary<IRule,CRuleStencil> _RuleStencils = new Dictionary<IRule,CRuleStencil>();
////CRule 定义,继承接口,已经实现了hashcode和equal 方法
public class CRule : IRule, IDirtySupport, IEquatable<object>


//debug时候的方法
       private void DeleteStencilForRule(IRule rule)
        {
            if (_RuleStencils.ContainsKey(rule))
            {
                CRuleStencil stencil = _RuleStencils[rule];
                pnlStencilFlow.Controls.Remove(stencil);
                _RuleStencils.Remove(rule);
                stencil.Dispose();
            }
        }


[b]degug时候各个字段的数值,keys变为list 后 contains 为真。 dictionary 为假
		_RuleStencils.ToArray()[1].Key.Equals(rule)	true	bool
		_RuleStencils.ToArray()[1].Key.GetHashCode()	-1157842650	int
		rule.GetHashCode()	-1157842650	int
		_RuleStencils.ContainsKey(rule)	false	bool
		_RuleStencils.Keys.ToArray().Contains(rule)	true	bool[/b]



谢谢各位,急用。。。。。看了一天了这个问题
2010年6月02日 21:14
目前还没有答案

相关推荐

    Dictionary.zip

    标题中的"Dictionary.zip"表明这是一个包含源代码的压缩文件,主要与字典数据结构或相关的C#编程示例有关。在.NET框架中,`Dictionary`是C#编程中常用的一个类,它实现了键值对存储的数据结构,属于泛型集合类型,...

    C# dictionary 用法

    C# Dictionary 用法总结 C# 中的 Dictionary 用于存储键值对数据结构,类似于 Java 中的 HashMap。在 C# 中,Dictionary 是一个泛型类,键和值可以是任何类型。下面是 C# Dictionary 的一些常见用法。 用法 1:...

    C#中Dictionary的用法及用途

    ### C#中Dictionary的用法及用途 #### 一、Dictionary简介 `Dictionary, TValue&gt;` 是C#中一种非常重要的集合类型,属于.NET Framework的一部分,位于`System.Collections.Generic`命名空间内。它允许我们存储键值...

    C#源代码-Dictionary键值对集合.zip

    在C#编程语言中,`Dictionary, TValue&gt;`是一个非常重要的数据结构,它是一个键值对集合,提供了高效且灵活的存储和访问数据的方式。在这个压缩包文件中,你可能会找到一系列示例代码,用于展示如何在实际项目中使用`...

    一个多线程断点上传文件的功能

    dictionary.ContainsKey(Convert.ToInt32(dr["INDEX_KEY"])) && dictionary.Count &lt; upConfig.RETRY_TIME) { ParameterizedThreadStart threadStart = new ParameterizedThreadStart(FileUpLoad); Thread _thread...

    C# .net HashTable

    - `HashTable` vs `Dictionary, TValue&gt;`:`Dictionary`在.NET Framework 2.0引入,它提供了泛型支持,键和值都为特定类型,更安全且性能稍优。 - `HashTable` vs `ConcurrentDictionary, TValue&gt;`:`...

    Map里面containsKey的用法

    这个匹配过程基于对象的`equals()`方法,这意味着键必须与`Map`中存储的键具有相同的`equals()`结果才能被视为匹配。 下面是一个简单的Java程序,演示了如何使用`containsKey()`方法: ```java import java.util....

    dictionary C#

    ### Dictionary在C#中的应用与特性 #### 一、前言 `Dictionary, TValue&gt;`是C#中非常重要的集合类之一,它属于.NET Framework的一部分,位于`System.Collections.Generic`命名空间内。此集合类提供了键值对的存储...

    C#的HTML代码解析类

    (tag.Attributes.ContainsKey("class") && tag.Attributes["class"] == "result-item")) continue; if (!parser.ParseNext("a", out tag)) continue; if (!tag.Attributes.ContainsKey("href")) continue; list....

    Event Bus C# 事件总线

    在C#编程中,事件总线(Event Bus)是一种设计模式,它允许应用程序的不同组件之间进行松耦合的通信。这种模式特别适用于大型项目或微服务架构,因为它们可以简化组件之间的交互,使得代码更易于维护和扩展。下面将...

    C#数据字典

    在C#编程语言中,`字典`(Dictionary, TValue&gt;)是一个非常重要的数据结构,它提供了键值对的存储方式,使我们能够通过一个唯一的键(Key)快速访问对应的值(Value)。这种数据结构在处理关联数据时非常有用,例如...

    c# 图像识别的轮廓分析 摄像头取图识别

    c# 图像识别的轮廓分析 摄像头取图识别 string fileName = Path.GetDirectoryName(templateFile) + "\\" + found.template.name; if (!AugmentedRealityImages.ContainsKey(fileName)) { if (!File.Exists...

    KVDB数据库使用源码C#

    使用`dictionary.ContainsKey(key);`返回一个布尔值表示键是否存在于字典中。 - **Scan/Iterate**: 遍历所有键值对。`foreach (KeyValuePair, TValue&gt; pair in dictionary)`可以迭代字典中的每一项。 3. **线程...

    .net c#线程超时解决方案

    .net C#线程超时的解决方案,使用的时候在被调线程入口调用一下这个方法就可以。更多详细代码见附件 Report.RegisterThread(Report.GetCurrentWin32ThreadID(),Thread.CurrentThread); #region 获取当取线程的...

    C#版本EventBus事件总线实例源码.rar

    这个压缩包文件"**C#版本EventBus事件总线实例源码.rar**"应该包含了这些概念的具体实现代码,供开发者学习和参考。通过研究和实践这些源码,开发者能够更好地理解和运用事件驱动编程模式,提高C#应用程序的设计质量...

    Dictionary DictionaryDemo

    在IT行业中,`Dictionary`是一种常见的数据结构,广泛应用于各种编程语言中,如C#、Python、Java等。本文将详细解析`Dictionary`及其在实际编程中的应用,以`DictionaryDemo`为例进行深入探讨。 首先,`Dictionary`...

    C# 图 拓扑排序

    无环意味着不存在一条边可以从起点回到起点,形成环路。 2. **深度优先搜索(DFS)**:一种遍历或搜索树或图的方法,从根节点开始,深入探索树的分支,直到达到叶子节点,然后回溯。 3. **广度优先搜索(BFS)**:...

    .net C#线程超时

    .net C#线程超时的解决方案,使用的时候在被调线程入口调用一下这个方法就可以。更多详细代码见附件 Report.RegisterThread(Report.GetCurrentWin32ThreadID(),Thread.CurrentThread); #region 获取当取线程的...

    C# 解决最短路问题

    这个压缩包文件中的"最短路径问题"可能包含了C#代码示例,用于演示如何利用Dijkstra算法解决具体的最短路径问题。你可以通过解压文件,阅读和理解代码来进一步加深对Dijkstra算法及其C#实现的理解。同时,还可以尝试...

    C#winform实现钢琴7音

    在本文中,我们将深入探讨如何使用C# WinForm来实现一个基本的钢琴应用程序,它可以模拟出7个基础音符的声音。这个程序通过监听键盘事件,尤其是KeyDown事件,来触发相应的音效播放,使得用户可以通过敲击键盘上的...

Global site tag (gtag.js) - Google Analytics