Salut

Question concernant une comparaison.

J'ai une base de données SQL Server, avec une colonne PAYS_DEPLOYE de type BIT, Nullable

Du côté du code, je veux, si PAYS_DEPLOYE est inexistant, NULL ou 0, alors boolData = false, true si PAYS_DEPLOYE = 1

J'ai fais le code suivant

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
//...
bool boolData = false;
 
string SQL = "SELECT PAYS_DEPLOYE FROM REF_PAYS WHERE PAYS_ID = @paysId"
SqlCommand command = new SqlCommand(SQL, connexion);
command.Parameters.AddWithValue("@paysId", paysId);
 
SqlDataReader reader = command.ExecuteReader();
 
if (reader.Read())
    boolData = (reader["PAYS_DEPLOYE"] == (object)true);
 
reader.Close();
//...
J'ajoute 2 espions : un sur reader["PAYS_DEPLOYE"] et un sur (object)true
J'ai
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
reader["PAYS_DEPLOYE"] | true | object {bool}
(object)true           | true | object {bool}
Ma question est : pourquoi (reader["PAYS_DEPLOYE"] == (object)true) = false ? la comparaison se fait par référence ? (ça me rapelle le LISP où (eq 1 1) est nil (càd false), mais (LEQ 1 1) est t (càd true))