Ho un condizionale che sto scrivendo che sta controllando tre cose.Cercando di capire perché il resharper mi ha detto che l'espressione è sempre falsa
if(LoggedInMembershipUser == null || obj == null || boolVal)
in questo caso "LoggedInMembershipUser" è solo il Membership.GetUser(), "obj" è un oggetto di business a caso, e "boolVal" è ovviamente un valore booleano. Quando scrivo la dichiarazione come sopra, il resharper mi dice che la parte boolVal dell'istruzione è sempre falsa. Ma quando metto BoolVal all'inizio come sotto non ho notato questo.
if(boolVal|| LoggedInMembershipUser == null || obj == null)
Perché il primo sarebbe sempre falso ma il secondo no?
MODIFICA: si tratta del binding dei dati di riga di una vista a griglia. La griglia sta visualizzando i risultati di due oggetti con la stessa classe base, quindi "obj" avrà un valore se è uno dei tipi di oggetto ma non dell'altro. boolVal è un indicatore per quale tipo di oggetto è così ora che ci penso penso che se obj è nullo allora boolVal sarà sempre vero. È stato resharper rendendosi conto che alcuni come? Oh, scommetto che è perché guardando il mio codice sopra la linea che ho:
if (!uploaded){
var obj = GetObjectLogic();
}
Ok grazie per i commenti di aiuto. Immagino che questo possa essere votato per essere cancellato o qualsiasi altra cosa.
È 'boolVal' una variabile locale, un campo o una proprietà? La stessa domanda per 'obj' e' LoggedInMembershipUser'. –
L'unica cosa che viene in mente è il cortocircuito. Prova a usare '|' invece di '||' e vedi se il resharper si lamenta ancora. – juharr
puoi mettere insieme un (breve) metodo di test in modo da poterlo vedere nel contesto. – gh9