L'ordre d'exécution des conditions en C# Si la déclaration
Il y a deux cas énoncés ci-dessous qui a plusieurs conditions à l'aide d'opérateurs logiques. Logiquement, les deux sont les mêmes, mais l'ordre de vérifier diffère. La première et la seconde échoue.
J'ai évoqué MSDN pour vérifier si l'ordre de l'exécution des conditions définies; mais je ne pouvais pas trouver.
Envisager un multiple de vérifier la condition qui a &&
que l'opérateur logique. Est-il garanti que ce sera toujours vérifier la condition première et si cela n'est pas satisfait de la deuxième condition sera pas être vérifié?
J'ai utilisé la méthode 1 et cela fonctionne bien. La recherche d'une référence MSDN substantiaing l'utilisation.
Mise à JOUR
Reportez-vous "court-circuit" de l'évaluation
CODE
List<string> employees = null;
if (employees != null && employees.Count > 0)
{
string theEmployee = employees[0];
}
if (employees.Count > 0 && employees != null)
{
string theEmployee = employees[0];
}
OriginalL'auteur Lijo | 2013-05-23
Vous devez vous connecter pour publier un commentaire.
Le && et || les opérateurs de court-circuit. Qui est:
1) Si && évalue son premier opérande faux, il n'a pas d'évaluer son deuxième opérande.
2) Si || évalue son premier opérande vrai, il n'a pas d'évaluer son deuxième opérande.
Cela vous permet de faire des null check && faire quelque chose avec l'objet, comme si il n'est pas null, le deuxième opérande n'est pas évalué.
OriginalL'auteur Patashu
Vous devez utiliser:
&&
sera court-circuit et deemployees.Count
ne sera pas execucted siemployees
estnull
.Dans votre deuxième exemple, l'application va lancer une exception si
employees
estnull
lorsque vous essayez deCount
les éléments de la collection.http://msdn.microsoft.com/en-us/library/2a723cdk(v=vs. 71).aspx
OriginalL'auteur Darren
Les conditions sont vérifiées de gauche à droite. Le
&&
opérateur qu'à évaluer l'état de droit si la gauche de la condition est vraie.Section 5.3.3.24 de la Spécification du Langage C# états:
Donc, il est clair que expr-première est toujours évalué et si vrai, alors, et alors seulement, expr-deuxième est également évaluée.
OriginalL'auteur John Willemse
de gauche à droite tandis que l'expression est toujours discutable.
OriginalL'auteur G.Y
Le conditionnel-opérateur ET (&&) effectue un ET logique-de son bool opérandes, mais n'évalue sa deuxième opérande si nécessaire.
OriginalL'auteur Frank Rem
Le && et || les opérateurs sont souvent utilisés pour vérifier pour objet de conditions.
1) Le "&&" condition évalue son premier opérande faux, il n'a pas d'évaluer son deuxième opérande. Si elle retourne true, la deuxième condition est évaluée. Si la deuxième condition est vraie, alors seulement il va retourner la valeur true. Donc && peut être utilisé pour s'assurer que toutes les conditions soient remplies comme valide.
2) Le "||" condition évalue son premier opérande vrai, il n'a pas d'évaluer son deuxième opérande. Si la première condition est évaluée comme fausse, alors seulement il sera d'évaluer à la deuxième condition. Si elle est satisfaite, alors il retournera true. Sinon, false.
OriginalL'auteur Chirag
Réponse courte est oui.
OriginalL'auteur yclkvnc
Voir, par exemple, cette page MSDN pour && qui décrit l'évaluation de court-circuit.
Vous pouvez le vérifier ou de prouver l'exécution de la séquence comme ceci:
Vous obtenez 3 dans les deux cas - ce qui montre que dans les deux cas, le court-circuit de comportement prend place. D'autre part, vous pouvez utiliser le '&' ou '|', respectivement, opérateur logique, pour l'en empêcher. De ce fait, vous obtenez un résultat de 4, parce que les deux conditions ont été évalués.
OriginalL'auteur JeffRSon