Buenas,
Tengo un problema a la hora de pasar un string a un int,
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.
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:
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
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:
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.