Je ne peux pas sembler google it - ne semble pas aimer la syntaxe dans la chaîne de recherche. Merci pour l'aide. P>
7 Réponses :
en C et dans d'autres langues suivantes Les conventions de syntaxe C, telles que C ++, Perl, Java et C #, (A | B) dénote un peu ou; tandis qu'une double barre verticale (A || B) désigne un (court-circuit) logique ou. p>
Ce n'est pas un peu ou un peu ou avec une affectation à l'emplacement de stockage latéral gauche
Ceci est une mission bit sage. C'est grossièrement sténographique pour la note suivante
Method().x |= y; Method().x = Method().x | y; // Not equivalent var temp = Method(); temp.x = temp.x | y; // Pretty close
Si le côté gauche est une propriété, le getter n'est également jamais appelé une seule fois, ce qui est le même principe (étant donné qu'une propriété est essentiellement une méthode GET).
@Servy encore plus amusant à considérer: (attendre x) .Somemethod (). Y | = z; code> ou mon préféré personnel
(attendre y] .z + = Await un ; code>
@JareRedPar, c'est là que je dessine la ligne et gifle le développeur qui écrit une telle ligne. Aussi drôle que c'est, il mérite d'être sur plus d'une ligne.
@Jarredpar wow, votre édition est beaucoup plus effrayante; Le premier que je pouvais au moins envelopper ma tête. +1 pour les lols. Est-ce une addition + = code> ou un événement abonnant
+ = code>?
@Servy Malheureusement, en tant que développeur de compilateur, je ne peux pas arrêter le gars qui écrit ce genre de code. Vous devez vous assurer que le nouveau code fonctionne correctement
Ah, la vie facile d'un développeur LOB;)
a | = b code> est sémantiquement identique à celui
a = a | b code> p>
L'expression * Pas entièrement, mais assez proche à la plupart des fins. sup> p> a | = b code> est équivalente à l'affectation
a = A | B code>, où
| code> est le boeuf ou l'opérateur. * p>
Ce n'est pas exactement i> équivalent parce que le compilateur C # garantit les effets secondaires de A code> seulement une fois dans le cas
| = code> case
@Jarededpar: ok :) Mais si vous prenez a i> et b i> comme expressions et pas de code, alors oui, c'est vrai.
C'est comme vous pouvez également faire d'autres personnes comme + = code>, mais avec le binaire ou
& = code>,
/ = code>,
* = code>, etc., tout autre opérateur binaire (deux arguments) p> p>
| = est un opérateur bitwise ou d'affectation. Découvrez la documentation MSDN ici ici http: // msdn. Microsoft.com/en-us/Library/H5F1Z1ZZAW(V=VS.100).aspx P>
+1 pour le lien, -1 pour une description qui est trompeuse. | est un boeuf ou un opérateur, | = est un opérateur ou un opérateur associé à une affectation.
Vous allez trouver la réponse
ici sur msdn est la même chose que p>
7 réponses dans une minute;) - Quoi qu'il en soit, il convient de mentionner que x | = y n'est pas exactement i> identique à x = x | Y, dans cet effet secondaire, etc. Distinguez les deux dans certains cas, mais le concept est toujours là.
Fondamentalement, un duplicata de Stackoverflow. com / questions / 9021049 / opérateur-for-a-boolean-i nc / ...
@Chrisshain C'est un peu différent car c # et c ++ ont une sémantique différente pour l'expansion d'un
| = code> iirc.
@JaredPar True, j'oublie toujours la limitation des effets secondaires diff.
Je pense aussi que vous pouvez le remplacer en C ++, mais pas en C #, si la mémoire sert.