您的位置:首页 > 编程语言 > C#

C# GetHashCode与Equals在HashTable表查找时的关系

2014-04-26 21:20 405 查看
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.Win32;
using System.Threading;
using System.IO;
using System.Security.Cryptography;
using Common;

namespace ConsoleApplication2
{
public class Test
{
private string _id;

public string Id
{
get { return _id; }
set { _id = value; }
}

public Test(string id)
{
_id = id;
}

public override int GetHashCode()
{
Console.WriteLine("GetHashCode()");
return Id.Length;
}

public override bool Equals(object obj)
{
Console.WriteLine("Equals()");
return Id == (obj as Test).Id;
}
}

class Program
{
/// <summary>
/// 如果GetHashCode相等则不用Equals了,否则需要Equals
/// </summary>
/// <param name="args"></param>
static void Main(string[] args)
{
Dictionary<Test, string> dc = new Dictionary<Test, string>();

Test t1 = new Test("a");
Test t2 = new Test("b");
Test t3 = new Test("cc");

dc.Add(t1, "");
Console.WriteLine("----------------");
Console.WriteLine(dc.ContainsKey(t1));
Console.WriteLine("----------------");
Console.WriteLine(dc.ContainsKey(t2));
Console.WriteLine("----------------");
Console.WriteLine(dc.ContainsKey(t3));

}
}
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: