Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Lambda Expression: == vs. .Equals()

Tags:

c#

lambda

This is a purely academic question, but what's the difference between using == and .Equals within a lambda expression and which one is preferred?

Code examples:

int categoryId = -1;
listOfCategories.FindAll(o => o.CategoryId == categoryId);

or

int categoryId = -1; 
listOfCategories.FindAll(o => o.CategoryId.Equals(categoryId));
like image 295
Robert W Avatar asked Feb 16 '10 14:02

Robert W


1 Answers

For reference types, == is intended to communicate reference equality — do the two variables refer to the same object instance.
.Equals() is intended to communicate value equality — do the two probably different object instances referred to by the two variables have the same value, for some definition of "same" that you provide by overloading the method.

For value types, those two meanings are blurred.

like image 152
Joel Coehoorn Avatar answered Sep 17 '22 08:09

Joel Coehoorn