[ Foro de C# ]

una vez que te sales de un for o un foreach el valor de las variables asignados de tro del for y foreach se pierden?

29-Feb-2016 09:03
jonathan hashem (+1)
6 Respuestas

mi profesora no me deja trabajar sin clases
tengo que simular de una manera muy básica un estacionamiento
el cual no cobra por hora si no por ingreso
cada carro que entre debe pagar 10 pesos
Lo que la maestra pide es que el programa me de el ingreso por hora y por día
asi que en varios textbox solicité la alta del carro
con el uso de Arraylist metí todos los datos del carro
ahora dentro de un método en una clase que hice llamada empleados quería determinar el precio por hora pero no puedo hacer uso del foreach ya que termina perdiendo el valor calculado una vez que sale del foreach


29-Feb-2016 22:21
Nacho Cabanes (+31)

Si declaras las variable antes del "foreach", su valor se conservará a la salida de éste.

Si, por el contrario, la declaras dentro, no es que se pierda el valor, sino que el programa no compilará si tratas de acceder a esa variable desde fuera.


29-Feb-2016 23:02
jonathan hashem (+1)

Fue lo que hice declarar la variable fuera del foreach modifique el valor de la variable dentro del for each esperando que cuando salga y la quiera imprimir se actualice e imprima el valor asignado por el foreach pero me sigue dando el valor con el que incialize la variable , puede darse el caso de que sea error del programa ?


29-Feb-2016 23:03
jonathan hashem (+1)

Por cierto gracias por la ayuda


29-Feb-2016 23:22
jonathan hashem (+1)

    /*la variable prueba la declarè en la clase globalmente sin embargo pasa lo mismo si la declaro justo antes del foreach . Ahì solo estoy haciendo un intento para ver como funciona si me pudieras aclarar esta duda te lo agradecerìa demasiado*/

 public int calcularPrecioHora(string ayudante)
       {
            switch(ayudante)
           {
               case "1 a 2": foreach (Auto auto in estacionamiento)
                               {
                                if (auto.Hora == 1)
                               {
                                  prueba = 23;
                               
                               }
                               
                               }
                                 return prueba;
                             
                       
                                   break;

               default: prueba = 15;return prueba;
                   break;
           }
   
       }


02-Mar-2016 03:00
DG. Corporation. (+4)

Buenas Jonathan.

Las variables y los objetos generalmente se eliminan automaticamente por el
Garbage Collection.

Pienso que tu problema puede ser por  3 razones:

1 - Quizás nunca se entra al case.

2- O la colección o el arreglo no tiene ningún elemento, por lo tanto nunca se entra al foreach.

3- Quizás la condición nunca se cumpla la de if( auto.hora == 1).

Te recomiendo ir poniendo MessageBox o Console.WriteLine() en cada parte
y asi confirmas.

Información en un foro del Garbage Collection:

https://social.msdn.microsoft.com/Forums/es-ES/03b21eb6-5c43-4cea-91c2-adf4c79d5bbb/funcionamiento-del-recolector-de-basura-o-garbage-collector?forum=vcses
                                                                                                                                            Buena suerte.


15-Mar-2016 22:36
jonathan hashem (+1)

ok la checaré muchas gracias






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)