Это - чисто академический вопрос, но каково различие между использованием == и.Equals в лямбда-выражении и какой предпочтен?
Примеры кода:
int categoryId = -1;
listOfCategories.FindAll(o => o.CategoryId == categoryId);
или
int categoryId = -1;
listOfCategories.FindAll(o => o.CategoryId.Equals(categoryId));
Для ссылочных типов == предназначен для передачи ссылочного равенства - две переменные относятся к одинаковым ] экземпляр объекта.
.Equals ()
предназначен для передачи равенства значений - имеют ли два, вероятно, разных экземпляра объекта, на которые ссылаются две переменные, одно и то же значение, для некоторого определения «того же», которое вы даете путем перегрузки метода.
Для типов значений эти два значения размыты.
Их можно перегрузить отдельно, чтобы они могли давать разные ответы. См. http://msdn.microsoft.com/en-us/library/ms173147 (VS.80) .aspx , где обсуждается, как перегрузить каждый. Обычно они будут такими же, но гарантии этого нет. Так что это зависит от типа лямбда-объекта.
Это дубликат
C # разницы между == и Equals ()
Дополнительные мысли о различных видах равенства и о том, как ни один из них не делает то, что вы действительно хотите, см.
http: / /blogs.msdn.com/ericlippert/archive/2009/04/09/double-your-dispatch-double-your-fun.aspx
Я думаю, что если вы говорите о компилированных двоичных там мало вы можете сделать, (возможно, только применить UPX или связанный инструмент), который не делает много смысла, так как он может быть обращен.
Если вы говорите о написании нового кода, попробуйте Self Modyfing C Code , который, вероятно, будет самым сложным способом перепроектирования вашего приложения.
-121--1595031- OleDbCommand
и OleDbConnection
являются общими. SqlCommand
и SqlConnection
специфичны для SQL Server и могут использовать его возможности. Они также раскрывают возможности SQL Server. Например, их можно использовать для управления столбцами XML.
Лямбда здесь не имеет значения...
Для объектов значений = = и равны одинаковы Для ссылочного объекта = = будет true, если объекты являются одним и тем же объектом (указывает на один и тот же экземпляр), в то время как ожидается, что будет равно сравнивать содержимое объектов. Эта ссылка объясняет это другим способом.
Это зависит от того, что определено для объекта. Если для класса не определен оператор ==, он будет использовать оператор из класса Object, который проверяет Object.ReferenceEquals перед вызовом Equals ().
Это показывает важное различие:
если вы скажете A.Equals (B)
, то A должно быть nun-null. если вы скажете A == B
, A может быть пустым.
Это больше , выдающийся в мире Java . По сути, '==' - это перегрузка оператора , а .Equals () - это базовый метод класса Object .