Il linguaggio C# offre un supporto decisamente migliore dei Nullable Types rispetto a VB .NET. Nonostante ciò, utilizzando gli operatori di confronto su un tipo Nullable, es. un intero, il risultato è a dir poco strano e può dar luogo a bug piuttosto subdoli.
Infatti, eseguendo il seguente codice:
int? a; int? b; a=null; b=null; Debug.WriteLine(a == b); Debug.WriteLine(a != b);
l’uguaglianza dei due tipi nullable con entrambe le variabili impostate a null dà come risultato “true”, mentre l’operatore di disuguaglianza sulle stesse variabili produce come risultato “false”. Sin qui il comportamento è coerente.
Questo codice invece:
produce in entrambi i casi un risultato pari a "false", risultato a prima vista strano, oserei quasi dire illogico.
In sostanza:
- "a" è uguale a "b", ma "a" non è maggiore "oppure" uguale a "b".
- "a" è uguale a "b", ma "a" non è minore "oppure" uguale a "b"
I commenti sono aperti.
Comments are closed.