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

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));

 

        }

    }

}

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

你可能感兴趣的:(Hashtable)