automapper - .Net, C# - Boolean.Equal differs from == compare -
we using automapper map idatareader list of entities.
one problem noticed while unit testing following. if read bool value database (bit), automapper verry fine. when fluentassertions unittesting there problem shouldallbeequivalentto function. says true expected true returned on bool property of entity.
so tried check bool properties , noticed expected == returnd works (returns true) expected.equals(returned) not work (returns false)?!
i thought == , equals should same bool type?
what cause strange behaviour?
here code:
using (var connection = new sqlconnection("server=someserver;user id=someuser;password=***;database=somedatabase;multipleactiveresultsets=true")) using (var command = connection.createcommand()) { connection.open(); var itemsbefore = new list<item> { new item { checkdispo = true } }; command.commandtext = "select checkdispo items itemid = 1814"; var itemsafter = mapper.dynamicmap<list<item>>(command.executereader()); var = itemsafter[0].checkdispo.equals(true); // false var b = itemsafter[0].checkdispo == true; // true } public class item { public bool checkdispo { get; set; } }
both results should return true. have tested same scenario above , return true in both cases. please see below screenshot.

the boolean class overrides equals method follows:
public override bool equals(object obj) { if (!(obj bool)) { return false; } return == (bool)obj; } it provides separate overloaded method accepts boolean parameter. uses equality operator. think added because provides better performance on equals method because avoids typecasting overhead.
public bool equals(bool obj) { return == obj; } in case since passing boolean should hit above overloaded method , can see, using === operator.
Comments
Post a Comment