CodeGuru Home VC++ / MFC / C++ .NET / C# Visual Basic VB Forums Developer.com
Results 1 to 6 of 6

Threaded View

  1. #5
    Join Date
    Mar 2005
    Location
    Vienna, Austria
    Posts
    4,538

    Re: Compare 2 generic types?

    Quote Originally Posted by boudino
    I think it is because == operator can be overriden.

    To compare references use Object.ReferenceEquals(). Using this method, you could be sure that no override method is used and the
    parameters are really compared by references.
    As Generic Types can be everything you cannot simple compare them using '==' What should be compared that way ? adress, type, properties of a class, or is it simple a valueType and you only want to compare the value itself.

    So if you want to compare in a generic method you need to restrict T and implement an interface like IEquatable<T>
    Code:
    public class combi<T,U> where T: IEquatable<U>{
       public bool test(T valT, U valU) {
    	  return valT.Equals(valU);
       }
    }
    
    This is the standard way to create generics. anyone who uses this generic needs to implement ICompareable to whatever his T is and then it will work.

    Comparing adresses, just as boudino told you you can do
    Code:
    public bool ItemTest(U val, T val1 ) {
    	return object.ReferenceEqualsval, val1);
    }
    I have tested this in an example, it compiles and it works independent if you compare value or reference types
    Last edited by JonnyPoet; August 29th, 2008 at 02:09 PM.
    Jonny Poet

    To be Alive is depending on the willingsness to help others and also to permit others to help you. So lets be alive. !
    Using Code Tags makes the difference: Code is easier to read, so its easier to help. Do it like this: [CODE] Put Your Code here [/code]
    If anyone felt he has got help, show it in rating the post.
    Also dont forget to set a post which is fully answered to 'resolved'. For more details look to FAQ's about Forum Usage. BTW I'm using Framework 3.5 and you ?
    My latest articles :
    Creating a Dockable Panel-Controlmanager Using C#, Part 1 | Part 2 | Part 3 | Part 4 | Part 5 | Part 6 | Part 7

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  





Click Here to Expand Forum to Full Width

Featured