• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 467
  • Last Modified:

Using IEqualityComparer

Code generates 2 errors
Error      1      Using the generic type 'System.Collections.Generic.IEqualityComparer<T>' requires '1' type arguments      C:\Documents and Settings\xxxx\My Documents\Visual Studio 2005\Projects\HashInsensitiveComparer216\HashInsensitiveComparer216\Program.cs

Error      2      The type or namespace name 'CaseInsensitiveComparer' could not be found (are you missing a using directive or an assembly reference?)      C:\Documents and Settings\xxxx\My Documents\Visual Studio 2005\Projects\HashInsensitiveComparer216\HashInsensitiveComparer216\Program.cs
using System;
using System.Collections.Generic;
using System.Text;
using System.Globalization;
 
namespace HashInsensitiveComparer216
{
    class Program
    {
        static void Main(string[] args)
        {
            Hashtable dehash = new Hashtable(new InsensitiveComparer());
            dehash["First"] = "1st";
            dehash["Second"] = "2nd"; 
            dehash["Third"] = "3rd"; 
            dehash["Fourth"] = "4th"; 
            dehash["fourth"] = "5th";
 
            Console.WriteLine(dehash.Count); // 4 
        }
        public class InsensitiveComparer : IEqualityComparer
        {
            CaseInsensitiveComparer _comparer = new CaseInsensitiveComparer();
            public int GetHashCode(object obj)
            {
                return obj.ToString().ToLowerInvariant().GetHashCode();
            }
 
            public new bool Equals(object x, object y)
            {
                if (_comparer.Compare(x, y) == 0)
                {
                    return true;
                }
                else
                {
                    return false;
                }
            }
        }
    }
}

Open in new window

0
AstroGuy
Asked:
AstroGuy
1 Solution
 
WoodzCommented:
You are using the namespace System.Collections.Generic, which contains the generic IEqualityComparer<T> interface. It is complaining because you have not specified the generic type of this interface. If you intended to use the old, non-generic interface, change the using namespace to System.Collections.
0
 
AstroGuyAuthor Commented:
Workrd like a charm
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Get expert help—faster!

Need expert help—fast? Use the Help Bell for personalized assistance getting answers to your important questions.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now