[ Foro de C# ]

variable interna a metodo como estatica

19-Aug-2016 16:12
Antonio R B
1 Respuestas

Hola a todos.

Soy nuevo en la programación en C#, y tengo una duda sobre como implementar esto:


La idea es:

implementar un método dentro de una clase, que devuelva el número de llamadas que ha tenido.

En VB NET creo una aplicación de consola, con el siguiente código principal:

Module Module1

   Sub Main()

       Dim Contador As Integer
       Contador = 0

       For Contador = 1 To 10

           Console.WriteLine("La funcion ha sido llamada {0} veces.", ContadorLlamadas())

       Next Contador

       Console.ReadKey()

   End Sub

End Module


y agrego un módulo con el código siguiente:

Module ModGlobal


   Public Function ContadorLlamadas() As Integer

       Static Llamadas As Integer
       Llamadas = Llamadas + 1
       Return Llamadas

   End Function


End Module

el resultado es:

La funcion ha sido llamada 1 veces.
La funcion ha sido llamada 2 veces.
La funcion ha sido llamada 3 veces.
La funcion ha sido llamada 4 veces.
La funcion ha sido llamada 5 veces.
La funcion ha sido llamada 6 veces.
La funcion ha sido llamada 7 veces.
La funcion ha sido llamada 8 veces.
La funcion ha sido llamada 9 veces.
La funcion ha sido llamada 10 veces.

Se me ha ocurrido implementar la variable contador de llamadas como miembro static de la clase que contiene a ContadorLlamadas() y que ContadorLlamadas la incremente y devuelva cada vez que es llamada, pero me gustaría saber si conoceis un sistema para implementarlo con la misma arquitectura que en VB NET, es decir, con la variable Llamadas interna a un método de la clase.

Gracias.


25-Aug-2016 15:38
Nacho Cabanes (+84)

Tu fuente no está en C#, sino en VB.Net, y no tiene clases.

En C# bastaría con que crearas realmente una clase, y que esa clase tuviera un atributo static (declarado dentro de la clase pero fuera de la función). Desde la función incrementas la variable y devuelves su valor.






(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.)