[C#] Convertir string en int

Iniciado por DeMoNcRaZy, 28 Agosto 2015, 12:47 PM

0 Miembros y 1 Visitante están viendo este tema.

DeMoNcRaZy

Buenas,

Tengo un problema a la hora de pasar un string a un int,

Código (csharp) [Seleccionar]
public string valor1;
public float num2;
public int num1 = Convert.ToInt32(valor1);


Y este es el error que me salta, subrayándome la palabra valor1 en el Convert.

Error CS0236 A field initializer cannot reference the non-static field, method, or property 'sumar.valor1'

sumar es una clase.

Si supieran guiarme a que se debe dicho error lo agradecería.
Lo he echo en el archivo principal y hay me funcionó pero lo hago en una clase y me salta error a parte de haber probado de varias formas diferentes.
Gracias.

Saludos.
Esta página web no está disponible - Google Chrome

DarK_FirefoX

#1
Este error viene dado porque no puedes usar una variable de instancia para inicializar otra variable de instancia.

El problema es que el compilador puedes re-organizar el orden, por lo tanto no hay garantía de que valor1 se inicialize primero que num1 por lo que te puede dar una excepción NullReferenceException

Para darle vuelta a este problema puedes colocar esa linea de código dentro del constructor de tu clase:

Código (csharp) [Seleccionar]
public class sumar
{
   public string valor1;
   public float num2;
   public int num1;

  //...
  //...

  //Este es el constructor, el cual puede variar de acuerdo a tu clase,
  //solo estoy ilustrando
  public sumar()
  {
     //...
     num1 = Convert.ToInt32(valor1);
     //...
   }
}


Salu2s

DeMoNcRaZy

Cita de: DarK_FirefoX en 28 Agosto 2015, 15:01 PM
Este error viene dado porque no puedes usar una variable de instancia para inicializar otra variable de instancia.

El problema es que el compilador puedes re-organizar el orden, por lo tanto no hay garantía de que valor1 se inicialize primero que num1 por lo que te puede dar una excepción NullReferenceException

Para darle vuelta a este problema puedes colocar esa linea de código dentro del constructor de tu clase:

Código (csharp) [Seleccionar]
public class sumar
{
   public string valor1;
   public float num2;
   public int num1;

  //...
  //...

  //Este es el constructor, el cual puede variar de acuerdo a tu clase,
  //solo estoy ilustrando
  public sumar()
  {
     //...
     num1 = Convert.ToInt32(valor1);
     //...
   }
}


Salu2s

Gracias por tu respuesta.
Gracias a ello también he deducido que puedo declarar la misma variable dentro de la función.

Saludos.
Esta página web no está disponible - Google Chrome