關于靜態方法、變量和非靜態方法、變量的區別,園里的大神早就有了許多詳細的總結,個人覺得靜態方法、變量與非靜態方法、變量的區別可以總結為以下兩句話:
靜態的是屬于類的
非靜態是屬于對象的
就是說調用靜態方法和變量時可以直接使用ClassName.StaticMethod();調用非靜態方法和變量只能先創建一個類的實例ClassName instance = new CalssName();,之后再進行調用instance.Method();
但是很多人所說的靜態方法只能訪問類中的靜態方法和變量,自己有很大的疑問:
static void Main(string[] args) { Test test = new Test(); test.PRintInNotStatic(); } class Test { public static void PrintInStatic() { Console.WriteLine("this is in the static method"); } public void PrintInNotStatic() { Console.WriteLine("this is in the not static method"); } }
我這里不是調用了非靜態方法了嗎?是怎么回事呢?
經過自己的查閱資料和思考:發現自己原來跳入了一個坑,沒有注意到靜態方法只能訪問類中的靜態方法和變量這句話中類中的靜態成員。
我上面代碼中是創建了一個對象,然后通過對象調用了這個方法,而不是用類直接調用方法。只要理解了類和對象的區別就很容易能夠理解這句話的意思了。
記錄下自己的這個疑問,希望對有此疑問的園友有所幫助。
本文屬于新手帖,有錯誤的地方請大神多多指教。
新聞熱點
疑難解答