@sslaitha, merci. S'il répond suffisamment à votre question, n'oubliez pas de le marquer comme réponse.
Brandon le
3
Notez simplement que si vous avez int i = 10; et utilisez int.TryParse ("asdf", out i); que je contiendra 0 pas 10 !!! C'est parce que TryParse utilise une variable out, pas une référence.
CaffGeek
2
La «mise en garde» s'applique au troisième exemple - pas au deuxième. M'avait un peu perplexe car je m'attendais à ce que le «ceci» se réfère à l'exemple ci-dessus, pas ci-dessous.
peter_mcc
22
int myInt = System.Convert.ToInt32(myString);
Comme plusieurs autres l'ont mentionné, vous pouvez également utiliser int.Parse()et int.TryParse().
Si vous êtes certain que le stringsera toujours un int:
int myInt = int.Parse(myString);
Si vous souhaitez vérifier si stringc'est vraiment une intpremière:
int myInt;
bool isValid = int.TryParse(myString, out myInt); // the out keyword allows the method to essentially "return" a second valueif (isValid)
{
int plusOne = myInt + 1;
}
string varString = "15";
int i = int.Parse(varString);
ou
int varI;
string varString = "15";
int.TryParse(varString, out varI);
int.TryParseest plus sûr car si vous mettez quelque chose d'autre varString(par exemple "fsfdsfs"), vous obtiendrez une exception. En utilisant int.TryParsewhen string ne peut pas être converti en int, il retournera 0.
int i;
string whatever;
//Best since no exception raisedint.TryParse(whatever, out i);
//Better use try catch on this one
i = Convert.ToInt32(whatever);
Le moyen le plus rapide s'est avéré être le suivant:
y = 0;
for (int i = 0; i < s.Length; i++)
y = y * 10 + (s[i] - '0');
"s" est votre chaîne que vous souhaitez convertir en un entier. Ce code suppose que vous n'aurez aucune exception lors de la conversion. Donc, si vous savez que vos données de chaîne seront toujours une sorte de valeur int, le code ci-dessus est le meilleur moyen d'aller à la vitesse pure.
bool result = Int32.TryParse(someString, out someNumeric)
Cette méthode essaiera de convertir someStringen someNumericet retournera un resultdépend de la réussite de la conversion, du succès de la trueconversion et de l' falseéchec de la conversion. Notez que cette méthode ne lèvera pas d'exception si la conversion a échoué comme la Int32.Parseméthode l'a fait et qu'elle renvoie à la place zéro pour someNumeric.
Réponses:
Si vous êtes sûr que l'analyse sera correcte, utilisez
int.Parse(string)
Si ce n'est pas le cas, utilisez
int i; bool success = int.TryParse(string, out i);
Mise en garde! Dans le cas ci-dessous,
i
sera égal à 0 et non à 10 après leTryParse
.int i = 10; bool failure = int.TryParse("asdf", out i);
C'est parce que
TryParse
utilise un paramètre out , pas un paramètre ref .la source
int myInt = System.Convert.ToInt32(myString);
Comme plusieurs autres l'ont mentionné, vous pouvez également utiliser
int.Parse()
etint.TryParse()
.Si vous êtes certain que le
string
sera toujours unint
:int myInt = int.Parse(myString);
Si vous souhaitez vérifier si
string
c'est vraiment uneint
première:int myInt; bool isValid = int.TryParse(myString, out myInt); // the out keyword allows the method to essentially "return" a second value if (isValid) { int plusOne = myInt + 1; }
la source
int a = int.Parse(myString);
ou mieux encore, regardez dans
int.TryParse(string)
la source
string varString = "15"; int i = int.Parse(varString);
ou
int varI; string varString = "15"; int.TryParse(varString, out varI);
int.TryParse
est plus sûr car si vous mettez quelque chose d'autrevarString
(par exemple "fsfdsfs"), vous obtiendrez une exception. En utilisantint.TryParse
when string ne peut pas être converti en int, il retournera0
.la source
Si vous êtes sûr d'avoir un nombre "réel" dans votre chaîne, ou si vous êtes à l'aise avec toute exception qui pourrait survenir, utilisez ceci.
string s="4"; int a=int.Parse(s);
Pour plus de contrôle sur le processus, utilisez
string s="maybe 4"; int a; if (int.TryParse(s, out a)) { // it's int; } else { // it's no int, and there's no exception; }
la source
Faites quelque chose comme:
var result = Int32.Parse(str);
la source
int i; string whatever; //Best since no exception raised int.TryParse(whatever, out i); //Better use try catch on this one i = Convert.ToInt32(whatever);
la source
4 techniques sont ici comparées.
Le moyen le plus rapide s'est avéré être le suivant:
y = 0; for (int i = 0; i < s.Length; i++) y = y * 10 + (s[i] - '0');
"s" est votre chaîne que vous souhaitez convertir en un entier. Ce code suppose que vous n'aurez aucune exception lors de la conversion. Donc, si vous savez que vos données de chaîne seront toujours une sorte de valeur int, le code ci-dessus est le meilleur moyen d'aller à la vitesse pure.
À la fin, "y" aura votre valeur int.
la source
bool result = Int32.TryParse(someString, out someNumeric)
Cette méthode essaiera de convertir
someString
ensomeNumeric
et retournera unresult
dépend de la réussite de la conversion, du succès de latrue
conversion et de l'false
échec de la conversion. Notez que cette méthode ne lèvera pas d'exception si la conversion a échoué comme laInt32.Parse
méthode l'a fait et qu'elle renvoie à la place zéro poursomeNumeric
.Pour plus d'informations, vous pouvez lire ici:
https://msdn.microsoft.com/en-us/library/f02979c7(v=vs.110).aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-2
&
Comment convertir une chaîne en entier en C #
la source
int i; string result = Something; i = Convert.ToInt32(result);
la source
Vous pouvez utiliser soit,
int i = Convert.ToInt32(myString);
ou
int i =int.Parse(myString);
la source
class MyMath { public dynamic Sum(dynamic x, dynamic y) { return (x+y); } } class Demo { static void Main(string[] args) { MyMath d = new MyMath(); Console.WriteLine(d.Sum(23.2, 32.2)); } }
la source