equals-operator

Can the behavior for == be defined for an interface reference?

If an interface inherits IEquatable the implementing class can define the behavior of the Equals method. Is it possible to define the behavior of == operations? public interface IFoo : IEquatable {} public class Foo : IFoo { // IEquatable.Equals public bool Equals(IFoo other) { // Compare by value here...

An operator == whose parameters are non-const references

I this post, I've seen this: class MonitorObjectString: public MonitorObject { // some other declarations friend inline bool operator==(/*const*/ MonitorObjectString& lhs, /*const*/ MonitorObjectString& rhs) { return lhs.fVal==rhs.fVal; } } Before we can continue, THIS IS VERY IMPORTANT:...

Can't operator == be applied to generic types in C#?

According to the documentation of the == operator in MSDN, For predefined value types, the equality operator (==) returns true if the values of its operands are equal, false otherwise. For reference types other than string, == returns true if its two operands refer to the same object. For the string type, == compares t...

After overloading the operator==, how to compare if two variables points at the same object?

Overloading the comparison operator, how to compare if the two variables points to the same object(i.e. not value) public static bool operator ==(Landscape a, Landscape b) { return a.Width == b.Width && a.Height == b.Height; } public static bool operator !=(Landscape a, Landscape b) { return !(a.Width == b.Width && a.Height == ...

Any way to allow classes implementing IEntity and downcast to have operator == comparisons?

Basically here's the issue. All entities in my system are identified by their type and their id. new Customer() { Id = 1} == new Customer() {Id = 1}; new Customer() { Id = 1} != new Customer() {Id = 2}; new Customer() { Id = 1} != new Product() {Id = 1}; Pretty standard scenario. Since all Entities have an Id I define an interface fo...

C++ template class error with operator ==

Error: error C2678: binary '==' : no operator found which takes a left-hand operand of type 'const entry' (or there is no acceptable conversion) The function: template <class T, int maxSize> int indexList<T, maxSize>::search(const T& target) const { for (int i = 0; i < maxSize; i++) if (elements[i] == target) //ERROR??? ...

C# what does the == operator do in detail?

in c# what does exactly happen in the background when you do a comparison with the "==" operator on two objects? does it just compare the addresses? or does it something like Equals() or CompareTo() ? PS: what about the "==" operator in java? does it behave the same? ...

C# implicit conversions and == operator

Some code for context: class a { } class b { public a a{get;set;} public static implicit operator a(b b) { return b.a; } } a a=null; b b=null; a = b; //compiler: cannot apply operator '==' to operands of type tralala... bool c = a == b; Is it possible to use == operator on different type instanc...

Is it necessary to override == and != operators when overriding the Equals method? (.NET)

Or it's advisable to do that? Why? ...

How to treat nulls in equality comparisons?

When I have to implement equality comparers for public class SampleClass { public int Prop { get; set; } } Should I make null == new SampleClass() and new SampleClass() == null and new SampleClass().Equals(null) false? And what about new SampleClass() != null Should it be also false? UPDATE People are questioning th...

C#: What needs to be overriden in a struct to ensure equality operates properly?

As the title says: do i need to override the == operator? how about the .Equals() method? Anything i'm missing? ...

What are the best practices for implementing the == operator for a class in C#?

While implementing an == operator, I have the feeling that I am missing some essential points. Hence, I am searching some best practices around that. Here are some related questions I am thinking about: How to cleanly handle the reference comparison? Should it be implemented through a IEquatable<T>-like interface? Or overriding object...

Should I Overload == Operator?

How does the == operator really function in C#? If it used to compare objects of class A, will it try to match all of A's properties, or will it look for pointers to the same memory location (or maybe something else)? Let's create a hypothetical example. I'm writing an application that utilizes the Twitter API, and it has a Tweet class,...

Equality Test for Derived Classes in C++

Possible Duplicate: Whats the right way to overload operator== for a class hierarchy? In C++, how can derived classes override the base class equality test in a meaningful way? For example, say I have a base class A. Classes B and C derive from A. Now given two pointers to two A objects, can I test if they are equal (including ...

Problem with operator ==

I am facing some problem with use of operator == in the following c++ program. #include < iostream> using namespace std; class A { public: A(char *b) { a = b; } A(A &c) { a = c.a; } bool operator ==(A &other) { return strcmp(a, other...

Operator== in derived class never gets called.

Can someone please put me out of my misery with this? I'm trying to figure out why a derived operator== never gets called in a loop. To simplify the example, here's my Base and Derived class: class Base { // ... snipped bool operator==( const Base& other ) const { return name_ == other.name_; } }; class Derived : public Base { // ......

Two '==' equality operators in same 'if' condition are not working as intended.

I am trying to establish equality of three equal variables, but the following code is not printing the obvious true answer which it should print. Can someone explain, how the compiler is parsing the given if condition internally? #include<stdio.h> int main() { int i = 123, j = 123, k = 123; if ( i == j == k) ...

What happens if "== operator is not defined"?

What happens if "== operator is not defined"? Example: class a { int variable = 0; } class b { void proc() { a ref1 = new a(); a ref2 = new a(); bool cmp1 = ref1 == ref2;//? bool cmp2 = ref1 == ref1;//? } } Does it differ when working with structs? How about marshaled (System.Runtime...

Dictionary keys don't contain a key that's already contained in keys

Why is the following 'exist' boolean variable getting a value of false??? foreach (Cell existCell in this.decoratorByCell.Keys) { //this call yield the same hashcode for both cells. still exist==false bool exist = this.decoratorByCell.ContainsKey(existCell); } I've overridden GetHashCode() & ...

How do you override operator == when using interfaces instead of actual types?

I have some code like this: How should I implement the operator == so that it will be called when the variables are of interface IMyClass? public class MyClass : IMyClass { public static bool operator ==(MyClass a, MyClass b) { if (ReferenceEquals(a, b)) return true; if ((Object)a == null || (Object...