Solved

Using IEqualityComparer

Posted on 2009-07-09
2
422 Views
Last Modified: 2012-05-07
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
Comment
Question by:AstroGuy
2 Comments
 
LVL 4

Accepted Solution

by:
Woodz earned 500 total points
ID: 24814869
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
 

Author Closing Comment

by:AstroGuy
ID: 31601658
Workrd like a charm
0

Featured Post

How to improve team productivity

Quip adds documents, spreadsheets, and tasklists to your Slack experience
- Elevate ideas to Quip docs
- Share Quip docs in Slack
- Get notified of changes to your docs
- Available on iOS/Android/Desktop/Web
- Online/Offline

Join & Write a Comment

Suggested Solutions

Bit flags and bit flag manipulation is perhaps one of the most underrated strategies in programming, likely because most programmers developing in high-level languages rely too much on the high-level features, and forget about the low-level ones. Th…
Performance in games development is paramount: every microsecond counts to be able to do everything in less than 33ms (aiming at 16ms). C# foreach statement is one of the worst performance killers, and here I explain why.
It is a freely distributed piece of software for such tasks as photo retouching, image composition and image authoring. It works on many operating systems, in many languages.
Here's a very brief overview of the methods PRTG Network Monitor (https://www.paessler.com/prtg) offers for monitoring bandwidth, to help you decide which methods you´d like to investigate in more detail.  The methods are covered in more detail in o…

747 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

12 Experts available now in Live!

Get 1:1 Help Now