2010-03-26 25 views
8

Cuando tenemos un método estático en una clase, solo accede a miembros estáticos correctos y el método estático puede acceder solo con el nombre de clase. Así que no estoy en condiciones de acceder al método estático en mi ejemplo:¿Cómo acceder a un método estático en C#?

class myclass 
{ 
    int i ; static int j ; 
    static void get() 
    { 
     j = 101; 
     Console.WriteLine(j.ToString()); 
    } 
    public void test() 
    { 
     i = 11; j = 12; 
     Console.WriteLine(i.ToString()); 
     Console.WriteLine(j.ToString()); 
    } 
} 
class Program 
{ 
    static void Main(string[] args) 
    { 
     myclass clsmyclas = new myclass(); 
     clsmyclas.test(); 

     Console.ReadLine(); 
    } 
} 

}

Respuesta

9

se debe cambiar a

public static void get() 

y acceder a ella con

myclass.get(); 

No es una instancia de la clase.

+0

Gracias es trabajar bien para una respuesta de agradecimiento al Sr. Astander –

+0

No, no es cierto que en realidad debería ** ** cambiarlo a público. Hay otros niveles de accesibilidad que lo hacen accesible, que puede ser más adecuado para la situación. – Guffa

1

Necesita hacer que myclass.get sea un método público.

+0

ya lo tengo gracias Mr.mrjoltcola y por la respuesta también –

+0

No, no es necesario. Hay otros niveles de accesibilidad que lo hacen accesible, y podría ser mejor dependiendo de la situación. Ah, y ¿qué es un método "púbico"? ;) – Guffa

+0

Usted no es un público-phobe ¿verdad? ;) – codenheim

1

La accesibilidad predeterminada de un miembro es la más privada que le es posible. Eso significa que su método es privado ya que no ha especificado ningún nivel de accesibilidad.

tiene que especificar como pública (interna o si sólo se necesita el acceso dentro del mismo proyecto) para llegar a él:

public static void get() 

o:

internal static void get() 
+0

ya gracias Sr. Guffa está trabajando gracias por la respuesta –

5

Su tema es muy simple . El descriptor de acceso predeterminado para un método static void es private. Simplemente agregue public o internal al frente del método get y listo.

Además, sería mejor no llamar al método get para evitar confusiones con las propiedades.

0

Puede tener cualquier modificador de acceso que desee en sus métodos estáticos.

El acceso, por supuesto, limita la forma en que se usa fuera de la clase.

Sin embargo, los métodos estáticos no pueden usar esta palabra clave como referencias a la clase principal.

Dependiendo del nivel de acceso del método que se puede llamar a un método estático como:

ClassName.Property 
ClassName.Method 
ClassName.Field 
Cuestiones relacionadas