2010-03-26 17 views
8

Gdy mamy metodę statyczną w klasie, dostęp tylko statyczne członkowie prawo i statyczna metoda może uzyskać dostęp tylko z nazwą klasy. Więc nie jestem w stanie uzyskać dostęp do metody statycznej w moim przykładzie:Jak uzyskać dostęp do metody statycznej w języku 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(); 
    } 
} 

}

Odpowiedz

9

należy go zmienić na

public static void get() 

i dostęp ją

myclass.get(); 

Nie instancja klasy.

+0

Dziękuję to działa dobrze dziękuję za odpowiedź pana Astander –

+0

Nie, to nie jest pewne, że rzeczywiście powinien ** ** zmień go na publiczny. Dostępne są inne poziomy dostępności, które mogą być lepiej dostosowane do sytuacji. – Guffa

1

Musisz zrobić myclass.get metodą publiczną.

+0

Mam to dziękuję Mr. Mrroltcola i za odpowiedź również –

+0

Nie, on nie musi. Istnieją inne poziomy dostępności, dzięki którym są one dostępne i mogą być lepsze w zależności od sytuacji. Aha, i jaka jest "łonowa" metoda? ;) – Guffa

+0

Nie jesteś publicznym phobe, prawda? ;) – codenheim

1

Domyślna dostępność członka jest najbardziej prywatna, co jest możliwe. Oznacza to, że twoja metoda jest prywatna, ponieważ nie określiłeś żadnego poziomu dostępności.

Musisz podać go jako publiczny (lub wewnętrznego, jeśli potrzebujesz tylko dostęp w ramach tego samego projektu), aby go osiągnąć:

public static void get() 

czyli

internal static void get() 
+0

dziękuję, panie Guffa, dziękuje za odpowiedź –

5

Twój problem jest prosta . Domyślnym akcesoriem dla metody static void jest private. Po prostu dodaj public lub internal przed metodą get i jesteś gotowy.

Ponadto najlepiej nie wywoływać metody get, aby uniknąć nieporozumień z właściwościami.

0

Możesz mieć dowolny modyfikator dostępu w swoich statycznych metodach.

Dostęp do kursu ogranicza jedynie sposób jego używania poza samą klasą.

Jednak metody statyczne nie mogą używać tego słowa kluczowego jako odniesienia do klasy nadrzędnej.

W zależności od poziomu dostępu metody można wywołać metodę statycznie jak:

ClassName.Property 
ClassName.Method 
ClassName.Field 
Powiązane problemy