devrait être une simple question pour les experts C # ici.
Je veux essentiellement vérifier si une valeur ou une autre est vraie, un coup de feu sauvage au code est ci-dessous: P>
if ((Boolean.Parse(staff.getValue("Male")) | Boolean.Parse(staff.getValue("Female"))) { // is true }
8 Réponses :
Utilisez le || code> (double tuyau), logique ou.
bool isMale = Boolean.Parse(staff.getValue("Male");
bool isFemale = Boolean.Parse(staff.getValue("Female");
if (isMale || isFemale) // note double pipe ||
{
// do something if true
}
On dirait que vous recherchez le logique ou.
if(condition1 || condition2) { }
Le code donné dans la question utilise déjà un i> du logique ou des opérateurs - | code> - bien que je conviens qu'il est presque toujours préférable d'utiliser le court-circuit
|| code> version à la place.
@Lukeh | code> n'est pas logique ou opérateur. C'est un boeuf ou un opérateur.
@Markos: pas en C #. Pour Type Boolean code>, opérateur
| code> est un opérateur logique ou non court-circuit.
@Markos: à partir des documents MSDN: "pour bool code> opérandes,
| code> calcule le logique ou de ses opérandes" i> msdn.microsoft.com/en-us/library/kxszd0kx.aspx
@Gorpik Bien entendu, l'opération binaire sur un bit est en fait une opération logique non courtise.
@Markos: Mais il arrive que, dans C #, cet opérateur est spécifiquement défini comme un opérateur logique non court-circuitting, comme expliqué dans le lien de Lukeh. C'est une question de concept. Donc, votre premier commentaire est faux.
Le conditionnel ou l'opérateur si la première condition est || code> est ce dont vous avez besoin
true code>, puis la seconde condition n'est pas 'T vérifié depuis que le résultat va évidemment retourner
vrai code>. p> p>
L'opérateur | code>, tel qu'utilisé par le code exemple de la question, est également logique ou opérateur, bien que je conviens qu'il est presque toujours préférable d'utiliser le court-circuit
|| code > Version à la place.
Mon mauvais - Je l'ai édité à «conditionnel» car c'est comme ça que je l'ai vu être appelé.
Un peu de vérification d'exception est nécessaire de toute façon. La méthode Boolean.Parse () Obtient une chaîne comme argument et retourne soit supposant que les valeurs possibles de ou comparer manuellement p> true code> strud> ou
false code> strong> Si em> l'argument, une fois extrait de WhitSpace, est égal à "vrai" ou "fausse" (capitalisation de la note). Dans tout autre cas, la fonction renvoie une exception.
staff.gevalue ("mâle") code> et
staff.gevalue ("femelle") code> sont exactement ces deux, puis la simple disjonction (
|| code>) suffit. Si
null code> et la chaîne vide, vous devez vérifier les exceptions p>
Selon MSDN Boolean.Parse, c'est insensible à la casse. Et ce serait un bon endroit pour utiliser Boolean.Tryparse au lieu de boolean.parse pour éviter de faire la manipulation des exceptions.
Qu'est-ce que Boolean.True et même si c'était valide, quelle est la vertu de la comparer à nouveau à un booléen? Cela pourrait continuer à être: = boolean.true == staff.getvalue ("féminin") == true == true == vrai ..... == vrai code>. À quoi ça sert?
Vous n'êtes pas "Vérification des exceptions". Vous êtes "avaler des exceptions et rendre les gens qui hériter de votre code déchirent leurs cheveux." C'est exactement ce que ne pas faire avec des exceptions; Si l'analyse des booléens peut échouer, utilisez tryparse () code> comme phil agneau suggéré. Si la recherche d'une valeur de retour NULL veut dire que vous affecterez
False code> à Ismale ou à Isfemale, utilisez simplement l'opérateur null-coalescing, "??". msdn.microsoft.com/en-us/library/ms173224.aspx. I.e.
ismale = staff.gevalue () ?? faux; code>
Phil: Complètement d'accord !!!! Michael: TYPO, c'était censé être: ismale = boolean.truestring == staff.getvalue ("mâle") code> et non
ismale = boolean.true == Staff.gevalue (" ") code>. Jloubert: plutôt
Boolean.Parse (Staff.getvalue () ?? Boolean.falestring) Code> (ou avec Tryparse).
Si exactement, il faut être vrai, il s'agit de:
Pour indiquer si un sexe est spécifié avec une valeur de "true" plutôt que "false", . Valeurs L'objet Donc, au cas où cette question est littérale et non un exemple abstrait, ... p> mâle ou femme .. tout le monde est l'un ou l'autre. Peut-être dans votre question que vous vouliez demander lequel des deux est le cas? Dans ce cas, p> ou simplement, p> Personnel Code> est. P>
Notez que de sorte que les deux méthodes d'analyse devraient renvoyer ou p> tryparse code> fonctionne plus rapidement et plus sûr, alors juste
parse code> car ne jette pas une exception en cas d'erreur.
tryparse code> renvoie BOOL qui indique était d'analyser le succès ou non.
true code> et seulement après cela - faire le chèque principal p> < Pré> xxx pré>
Ceci est un scénario similaire, mais je vérifie trois valeurs de bool ou plus.
Thread th = new Thread(() => { while (true) { bool allReadComplete = true; foreach (IDataProvider provider in lstDataProviders) { provider.StartReading(); if (provider.FinishedReading) allReadComplete = allReadComplete && provider.FinishedReading; else allReadComplete = provider.FinishedReading; } // to induce some context switching Thread.Sleep(0); if (allReadComplete) break; } Console.WriteLine("Thread Exiting"); }); th.IsBackground = true; th.Start();
Voulez-vous dire au moins une des valeurs est vraie, ou exactement l'une des valeurs est vraie?
Ne serait-il pas "homme ou est une femme" toujours être vraie? Sur Terre, de toute façon?
@RAY, quoi s'il existe une option transsexuelle ou "préférer ne pas répondre"?
@Ray qui n'est pas tout à fait vrai.
@Matt - je vis dans le Midwest - nous n'avons pas ces options ici
@Null - quel genre de films regardez-vous /?
Cela va descendre rapidement. De quoi parlions-nous?
@Ray voir language.home.sprynet.com/otherdex/22enuf.htm