@sslaitha, dzięki. Jeśli odpowiedź była wystarczająca, pamiętaj, aby oznaczyć ją jako odpowiedź.
Brandon
3
Zwróć uwagę, że jeśli masz int i = 10; i użyj int.TryParse ("asdf", out i); że będę zawierał 0, a nie 10 !!! Dzieje się tak, ponieważ TryParse używa zmiennej out, a nie ref.
CaffGeek
2
„Ostrożność” dotyczy trzeciego przykładu - nie drugiego. Zastanawiałem się trochę, ponieważ spodziewałem się, że „to” będzie odnosić się do przykładu powyżej, a nie poniżej.
peter_mcc,
22
int myInt = System.Convert.ToInt32(myString);
Jak wspomniało kilku innych, możesz również użyć int.Parse()i int.TryParse().
Jeśli masz pewność, że stringzawsze będzie int:
int myInt = int.Parse(myString);
Jeśli chcesz sprawdzić, czy stringto naprawdę intpierwsza:
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);
lub
int varI;
string varString = "15";
int.TryParse(varString, out varI);
int.TryParsejest bezpieczniejsze, ponieważ jeśli wstawisz coś innego varString(na przykład "fsfdsfs"), dostaniesz wyjątek. Używając int.TryParsewhen string nie można przekonwertować na int, zwróci 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);
y = 0;
for (int i = 0; i < s.Length; i++)
y = y * 10 + (s[i] - '0');
„s” to ciąg znaków, który chcesz przekonwertować na liczbę całkowitą. Ten kod zakłada, że podczas konwersji nie będzie żadnych wyjątków. Więc jeśli wiesz, że twoje dane łańcuchowe zawsze będą miały wartość typu int, powyższy kod jest najlepszym sposobem na osiągnięcie czystej prędkości.
bool result = Int32.TryParse(someString, out someNumeric)
Ta metoda spróbuje przekonwertować someStringna someNumerici zwróci resultzależność, jeśli konwersja powiedzie się, truejeśli konwersja zakończy się powodzeniem i falsejeśli konwersja się nie powiedzie. Zwróć uwagę, że ta metoda nie zgłosi wyjątku, jeśli konwersja nie powiedzie się, tak jak w przypadku Int32.Parsemetody, a zamiast tego zwraca zero dla someNumeric.
Aby uzyskać więcej informacji, możesz przeczytać tutaj:
Odpowiedzi:
Jeśli masz pewność, że przeanalizuje poprawnie, użyj
int.Parse(string)
Jeśli nie, użyj
int i; bool success = int.TryParse(string, out i);
Uwaga! W poniższym przypadku
i
będzie równe 0, a nie 10 poTryParse
.int i = 10; bool failure = int.TryParse("asdf", out i);
Dzieje się tak, ponieważ
TryParse
używa parametru out , a nie parametru ref .źródło
int myInt = System.Convert.ToInt32(myString);
Jak wspomniało kilku innych, możesz również użyć
int.Parse()
iint.TryParse()
.Jeśli masz pewność, że
string
zawsze będzieint
:int myInt = int.Parse(myString);
Jeśli chcesz sprawdzić, czy
string
to naprawdęint
pierwsza: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; }
źródło
int a = int.Parse(myString);
lub jeszcze lepiej, spójrz na
int.TryParse(string)
źródło
string varString = "15"; int i = int.Parse(varString);
lub
int varI; string varString = "15"; int.TryParse(varString, out varI);
int.TryParse
jest bezpieczniejsze, ponieważ jeśli wstawisz coś innegovarString
(na przykład "fsfdsfs"), dostaniesz wyjątek. Używającint.TryParse
when string nie można przekonwertować na int, zwróci0
.źródło
Jeśli jesteś pewien, że masz „rzeczywistą” liczbę w swoim ciągu lub nie przeszkadza Ci żaden wyjątek, który może się pojawić, użyj tego.
string s="4"; int a=int.Parse(s);
Aby uzyskać większą kontrolę nad procesem, użyj
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; }
źródło
Zrób coś takiego:
var result = Int32.Parse(str);
źródło
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);
źródło
Testowane są tutaj 4 techniki.
Najszybszy okazał się następujący sposób:
y = 0; for (int i = 0; i < s.Length; i++) y = y * 10 + (s[i] - '0');
„s” to ciąg znaków, który chcesz przekonwertować na liczbę całkowitą. Ten kod zakłada, że podczas konwersji nie będzie żadnych wyjątków. Więc jeśli wiesz, że twoje dane łańcuchowe zawsze będą miały wartość typu int, powyższy kod jest najlepszym sposobem na osiągnięcie czystej prędkości.
Na końcu „y” będzie miało wartość int.
źródło
bool result = Int32.TryParse(someString, out someNumeric)
Ta metoda spróbuje przekonwertować
someString
nasomeNumeric
i zwróciresult
zależność, jeśli konwersja powiedzie się,true
jeśli konwersja zakończy się powodzeniem ifalse
jeśli konwersja się nie powiedzie. Zwróć uwagę, że ta metoda nie zgłosi wyjątku, jeśli konwersja nie powiedzie się, tak jak w przypadkuInt32.Parse
metody, a zamiast tego zwraca zero dlasomeNumeric
.Aby uzyskać więcej informacji, możesz przeczytać tutaj:
https://msdn.microsoft.com/en-us/library/f02979c7(v=vs.110).aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-2
&
Jak przekonwertować ciąg na liczba całkowita w C #
źródło
int i; string result = Something; i = Convert.ToInt32(result);
źródło
Możesz użyć albo
int i = Convert.ToInt32(myString);
lub
int i =int.Parse(myString);
źródło
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)); } }
źródło