Convertir des.ToBoolean et Boolean.Analyser ne pas accepter de 0 et de 1
Pourquoi il a été décidé que lors de l'analyse d'un booléen, 0/1 ne sont pas acceptables?
Lors de l'analyse de toute valeur de type integer, il accepte des chaînes numériques à être analysé. (Et si .NET peut analyser la chaîne "d'Une centaine de millions deux cent soixante-cinq mille huit cent soixante-cinq" je serais surpris).
Ce qui rend les booléens spécial? Ils sont essentiellement de 0 à faux, et non de zéro, comme vrai dans mon expérience...
Est-il un bcl méthode pour analyser une chaîne comme celle-ci, et si non, pourquoi?
Note: j'ai oublié de préciser dans une chaîne de caractères "0" et "1". Curieux cependant que si déjà un int, il fonctionne comme je l'ai prévu. Peut-être que cela a causé de la confusion.
Vous devez vous connecter pour publier un commentaire.
0 et (non-nulle) ne sont pas égaux pour "de faux" et "vrai", ils sont juste la représentation choisie par C. Autres langues, utilisez 0 pour vrai et -1 pour de faux, ou d'autres systèmes entièrement. Un booléen est pas un 0 ou un 1, c'est un vrai ou un faux.
Devrait-il également de gérer le "oui" et "non", "off" et "sur", et tous de la myriade d'autres choses qui sont analogues à des booléens? Où peut-on tracer la ligne?
00000000
et11111111
.C'est un détail d'implémentation, et n'est pas du tout pertinent.
true
est une valeur booléenne.false
est une valeur booléenne. Rien d'autre ne l'est pas.Si vous souhaitez analyser quelque chose de tel que la chaîne "0" évalue les
false
tout autre chose évaluetrue
, vous pouvez utiliser:Partagé
FormatHelper
classe indiquée ci-dessous fournit une solution simple à l'aide de deux variantes d'une méthode surchargée appeléStringToBoolean
.À la fois les variations de fournir un cas-insentive chaîne de match
1) La durée normale de conversion de string boolean défaut vide ou null chaînes de
false
Les exemples suivants entraînera une
boolean
valeur defalse
:-Tous les autres de la chaîne de valeurs dans un
Boolean
valeur detrue
tels que:-Remarque: Modifier la valeur de
BooleanStringOff
dans la catégorie ci-dessous pour inclure plus (ou moins) des valeurs pour faux/off2) Suit les mêmes règles que 1) ci-dessus, mais permet à une valeur par défaut de
true
à fournir au titre de la 2ème argument de la conversion.La valeur par défaut est utilisé lorsque le
String
valeur est vide ounull
. Ceci est utile si un manquant de la chaîne de valeur doit signifier unetrue
état.L'exemple de code suivant sera de retour
true
L'exemple de code suivant sera de retour
false
C'est le code pour le
FormatHelper
classeMalheureusement, cela arrive beaucoup dans .NET. Par exemple, je ne me souviens pas si c'est Sérialiseur XML ou XmlConvert mais l'un d'eux échoue si le boîtier de Vrai/Faux ne sont pas corrects.
Vous pouvez aller-retour à travers entier à obtenir ce que vous voulez.
Dans le cas ci-dessus, quelque chose de non-zéro true.
Pour cette raison, j'ai créé une classe que j'utilise tous les plus appelé ConversionStrategy qui prend en compte le type de source et de destination, le type et choisit les plus idéal (et flexible) stratégie de conversion pour effectuer la conversion.
Vous voulez
Convert.ToBoolean(int value)
pas sûr de ce qu'est l'analyse les méthodes 🙂Code pour aucune utilité:
Comment à ce sujet?