Estoy tratando de convertir mi variable de cadena en un número entero para agregarle un valor (+1), pero el resultado que obtengo es:
1111De hecho, debería obtener un total de 4 cuando lo reconvierta a cadena.
¿Qué estoy haciendo mal?
public string str_Val = "1"; void Update () { if (str_Val != "5") { str_Val = int.Parse (str_Val + 1).ToString (); } }Se trata de la prioridad de las acciones:
int.Parse (str_Val + 1) En la fila de arriba, primero ocurre la suma str_Val + 1 dando como resultado 11 , 111 , 111 , etc.
Luego se produce el análisis cambiando "11" a 11
Luego, a la cadena se produce el cambio 11 a "11"
Así que cambia tu código a
str_Val = (int.Parse(str_Val)+1).ToString();Esto primero convertirá la cadena a int, luego agregará dos enteros y finalmente convertirá el entero a cadena nuevamente.
está concatenando 1 a la cadena antes de analizar, esa es la razón del comportamiento en su código ...
por lo que estás haciendo:
"1" + 1
"11"
Analizar a int ("11")
convertir a cadena (11)
hacer en su lugar:
if (str_Val != "5") { str_Val = (int.Parse(str_Val) + 1).ToString (); } }