2010-03-26 37 views
8

當我們在一個類中有一個靜態方法時,它只能訪問靜態成員,而且只能訪問靜態成員的類名。所以,我不能夠訪問靜態方法在我的例子:如何訪問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(); 
    } 
} 

}

回答

9

您應將其更改爲

public static void get() 

myclass.get(); 

訪問它不是該類的一個實例。

+0

謝謝你,這是工作的罰款感謝響應astander先生 –

+0

不,這不是肯定的是,他居然**應**將其改爲公開。還有其他可訪問性級別可以訪問,這可能更適合這種情況。 – Guffa

1

您需要使myclass.get成爲公共方法。

+0

雅我收到了謝謝你Mr.mrjoltcola和回覆也 –

+0

不,他不需要。還有其他可訪問性級別使其可訪問,並且根據情況可能會更好。哦,什麼是「公共」方法? ;) – Guffa

+0

你是不是一個公衆phobe? ;) – codenheim

1

成員的默認可訪問性是最可能的私有成員。這意味着您的方法是私人的,因爲您尚未指定任何輔助功能級別。

你必須將其指定爲公共(或內部,如果你只需要在同一個項目中獲得),以達到它:

public static void get() 

或:

internal static void get() 
+0

ya謝謝你,古法先生它正在工作謝謝你的回覆 –

5

你的問題很簡單。 static void方法的默認訪問器是private。只需在get方法的前面添加publicinternal,您就可以輕鬆前往。

另外,最好不要調用方法get以避免與屬性混淆。

0

您可以在靜態方法上使用任何訪問修飾符。

當然,訪問只限制它在課堂外使用的方式。

但是,靜態方法不能使用this關鍵字作爲對父類的引用。

根據方法的訪問級別,你可以調用一個方法靜態爲:

ClassName.Property 
ClassName.Method 
ClassName.Field 
相關問題