2010-02-26 11 views

Répondre

9
int a = int.Parse(myString); 

ou mieux encore, regardez dans int.TryParse(string)

19
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 string aura toujours un int:

int myInt = int.Parse(myString); 

Si vous souhaitez vérifier si string est vraiment un int premier:

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; 
} 
5

Si vous êtes Assurez-vous que vous avez un "vrai" numéro dans votre chaîne, ou vous êtes à l'aise avec toute exception qui pourrait survenir, utilisez ceci.

string s="4"; 
int a=int.Parse(s); 

Pour un peu 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; 
} 
5

faire quelque chose comme:

var result = Int32.Parse(str); 
127

Si vous êtes sûr que ça va bien analyser, utilisez

int.Parse(string) 

Si ce n'est pas le cas, utilisez

int i; 
bool success = int.TryParse(string, out i); 

Attention! Dans le cas ci-dessous, i sera égal à 0, et non 10 après le TryParse.

int i = 10; 
bool failure = int.TryParse("asdf", out i); 

C'est parce que TryParse utilise un sur paramètre, pas un paramètre ref.

+2

@sslaitha, merci. Si cela répond suffisamment à votre question, n'oubliez pas de la marquer comme la réponse. – Brandon

+3

Notez simplement que si vous avez int i = 10; et utilisez int.TryParse ("asdf", out i); que je vais contenir 0 pas 10 !!! C'est parce que TryParse utilise une variable out, pas une ref. – CaffGeek

+2

La "mise en garde" s'applique au troisième exemple - pas au second. M'a étonné un peu car je m'attendais à ce que le "ceci" se réfère à l'exemple ci-dessus, pas ci-dessous. –

3
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); 
6
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'autre dans varString (par exemple "fsfdsfs") vous obtiendrez une exception. En utilisant int.TryParse lorsque la chaîne ne peut pas être convertie en int, elle renvoie 0.

0
int i; 

string result = Something; 

i = Convert.ToInt32(result); 
0
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)); 
    } 
} 
+0

envisagez de fournir une explication à votre code – arghtype

1

4 techniques are benchmarked here.

La façon la plus rapide est avéré être les suivantes:

y = 0; 
for (int i = 0; i < s.Length; i++) 
     y = y * 10 + (s[i] - '0'); 

"s" est votre chaîne que vous voulez convertir en un entier. Ce code suppose que vous n'aurez aucune exception pendant 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.

0

Vous pouvez utiliser,

int i = Convert.ToInt32(myString); 

ou

int i =int.Parse(myString); 
1

résultat bool = Int32.TryParse (someString, sur someNumeric)

Cette méthode va essayer de convertir votre string someString en int someNumeric et vous renvoyant boolean result. true si la conversion a abouti et false si la conversion a échoué. Notez que cette méthode ne lancera pas d'exception si la conversion a échoué comme l'a fait la méthode Int32.Parse et qu'elle renvoie zéro pour someNumeric.

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
&
How to convert string to integer in C#