Est-il plus rapide de faire une comparaison ou une distribution en C# .Net?
Par exemple:Diverses performances
bool? flag = null;
...
if(flag == true)... or if((bool)flag)...
De plus, quel est le coût (en mémoire) d'un casting?
Est-il plus rapide de faire une comparaison ou une distribution en C# .Net?
Par exemple:Diverses performances
bool? flag = null;
...
if(flag == true)... or if((bool)flag)...
De plus, quel est le coût (en mémoire) d'un casting?
Si la mémoire est utilisée, le compilateur vous forcera à transformer le bool?
en bool
avant de l'utiliser dans l'instruction if. Vous pourriez aimer l'opérateur de coalesce null:
//If flag == null then return false, otherwise return the value of flag.
if (flag ?? false)
IIRC, Ceux traduisent à peu près la même chose. Sauf si vous faites un nombre absurdement grand de tels contrôles, la différence est imperceptible à toutes fins pratiques.
Si une valeur nulle dans le drapeau signifie «faux», j'utiliserais la comparaison. La distribution est une mauvaise idée, car elle enverra une exception si flag est nul. Pour être sûr, vous devez tester null avant le casting. Cela signifie que vous devez faire une comparaison et une distribution au lieu d'une comparaison seulement.
La différence de performance est négligeable.
Gardez à l'esprit que
bool? flag = null;
// ...other code...
if ((bool)flag)
{
}
pourrait jeter un InvalidOperationException
si flag
n'a pas été affecté dans le code entre la déclaration variable et la distribution.
Je dois demander ... pourquoi utiliser un bool Nullable? J'ai toujours trouvé que mettre mon bool à n'importe quelle valeur est 'correct' et ensuite seulement le changer en fonction de certaines conditions fonctionne, et ensuite vous évitez cette question: vous pouvez simplement utiliser "if (flag)" – AllenG
Je pensais que ce serait le moyen le plus simple d'illustrer ma question. Vous avez raison cependant, en utilisant juste un booléen est un meilleur moyen. – Richard