Siemka
Piszę sobie i piszę, i naraz patrzę nie działa:
// productsInDatabase - List<Product>
// product - Product
if (productsInDatabase.Contains(product) == false)
{
productInDatabase.Add(product);
}
prosty kod. Ale problem jest z contains(). mam wpisany już produkt do tej listy, po czym wywołuję funcję z tym kodem i product jako parametrem. Ten product już powinien być w liście, referencja nie powinna się nigdzie zmienić, nie był tworzony nowy product tylko edytowany stary. Logika podpowiada - containst() powinno zwrócić true. I tak się działo u kumpla, wszystko chodziło poprawnie. U mnie jednak contains() zwracało false po edycji produktu.
Rada się znalazła oczywiście, implementacja IEquatable<Product> i wszystko chodzi jak należy ale... czemu kod, który u mnie zwraca false w tej samej sytuacji na innym kompie zwraca true? Już nieważne, że referencja gdzieś się mogła zmienić i u mnie leciało true. Ten sam kod, w tych samych warunkach powinien się zachowywać tak samo, nie?
Kod na .NET 2.0
Ciekawe jest to, zastanawia mnie i już :) może ktoś się z tym spotkał?