c#物件導向- 靜態成員和非靜態成員的區別
文章目錄
- 靜態和非靜態區別
靜態和非靜態使用
提示:
(1)加上static就是靜態成員,不加就是非靜態成員。
(2)在一個類中,既可以有靜態成員,也可以有非靜態資源。
(3)在呼叫例項成員時,需要使用 物件名(例項).例項中的成員。
(4)在呼叫靜態成員的時候,需要使用 類名.靜態成員的名字。
class Person
{
// 在別的檔案呼叫此方法時:
// Person m = new Person;
// m.M();
public void M() // 例項方法
{
Console.WriteLine("我是非靜態方法");
}
// 在別的檔案呼叫此方法時:
// Person.M1();
public static void M1() // 靜態方法
{
Console.WriteLine("我是靜態方法");
}
}
總結
提示:
(1)靜態成員必須使用類名去呼叫,而例項成員使用物件名呼叫;
(2)靜態函式中,只能訪問靜態成員,不允許訪問例項成員;
(3)例項函式中,既可以使用靜態成員,也可以使用例項成員。
(4)在靜態類中,只能出現靜態成員,不允許出現例項成員,否則將會報錯:
(5)靜態類,是不允許被例項化的,因為靜態類中,沒有例項成員,其次,在呼叫時靜態成員時,也必須用類名來呼叫。
使用靜態類和非靜態類的時機
(1)如果你想要你的類當做一個“工具類”去使用時,這個時候可以考慮將類寫成靜態類(如:Console這個類就是工具類);
所為工具類就是:經常要使用的方法,可以封裝到一個靜態類中。
(2)靜態類在整個專案中,它是資源共享的,所以,專案中,儘量少使用靜態類,因為他會佔用記憶體空間,且只有整個程式都結束時,才會釋放資源(GC垃圾回收器回收);
相關文章
- 靜態資料成員和靜態成員函式函式
- C# 靜態成員與例項成員C#
- C++類中的常成員和靜態成員C++
- Java的靜態成員類Java
- C#快速入門教程(3)——類的靜態成員和例項成員C#
- C++類靜態成員C++
- c++類的靜態成員C++
- c++中的靜態成員C++
- C++:類的靜態成員C++
- C++ 類的靜態成員C++
- TypeScript 中 class 的例項成員與靜態成員TypeScript
- c# 用反射獲得靜態類成員C#反射
- 類的靜態成員變數和普通成員變數該怎樣去區別定義變數
- C++ 靜態資料成員C++
- Effective Java 3rd 條目24 靜態成員類優於非靜態Java
- 類內的靜態成員函式函式
- Python的靜態方法和類成員方法Python
- 靜態方法和普通的成員方法||分配記憶體空間的區別記憶體
- 物件導向 成員和巢狀物件巢狀
- 物件導向類成員物件
- 靜態內部類和非靜態內部類區別
- 偽靜態、靜態和動態的區別
- 獨一無二----靜態成員變數 (轉)變數
- Java中靜態跟非靜態的區別總結Java
- C++學習筆記(三):類與物件--靜態成員變數與常成員函式C++筆記物件變數函式
- 區域性變數和全域性變數(靜態和非靜態)區別變數
- PHP 物件導向 (五)靜態方法PHP物件
- C++類的靜態成員變數初始化C++變數
- C/C++返回內部靜態成員的陷阱薦C++
- oop類的繼承與類靜態成員學習OOP繼承
- python之成員(物件導向)Python物件
- 對於靜態成員來說是類的建構函式,對於例項成員是類的原型物件。函式原型物件
- 網站偽靜態和純靜態區別網站
- 靜態變數和非靜態變數變數
- .NET偽靜態使用以及和純靜態的區別
- 靜態SDRAM和動態SDRAM的區別
- 動態庫和靜態庫的區別
- net 靜態方法與非靜態方法