c# 靜態成員和實體成員的區別
靜態成員也稱為共享成員,例如靜態屬性 靜態欄位 靜態方法;靜態成員可以在類的實體之間共享。
靜態類中只能有靜態成員,不能有實體成員,因為靜態類不能進行實體化;
在非靜態類中 即可以有靜態成員 也可以有非靜態成員;
只要是靜態成員 屬性 欄位 方法,都需要用類名去呼叫;
靜態成員和實體成員的區別:
靜態成員需要通過static修飾,非靜態成員不需要通過static修飾;
靜態成員屬于類,可以直接通過“類名.靜態成員”的方式訪問;
非靜態成員,必須實體化物件后,通過物件.實體成員來訪問;
當類第一次加載的時候(第一次被加載到記憶體的時候),該類下的所有的靜態成員都會被加載,實體成員有多少個物件,就會創建多少個物件;靜態成員會被加載到靜態存盤區,直到程式退出時才會被釋放;
由上面顯然可知,定義靜態的成員是可以影響程式的執行效率的。那么什么時候定義靜態的成員變數呢?
①變數需要被共享的時候②方法需要被反復的呼叫的時候
靜態成員和實體成員的區別:
靜態成員是需要通過static關鍵字來修飾的,而實體成員不用static關鍵字修飾。他們區別如下代碼:
01 class Program
02 {
03 static void Main(string[] args)
04 {
05 //靜態成員屬于類,可以直接通過“類名.靜態成員”的方式訪問
06 Person.Run();
07 //實體成員屬于物件,需要通過“物件名.實體成員”來訪問
08 Person p = new Person();
09 p.Sing();
10 }
11 }
12 class Person
13 {
14 //靜態成員變數
15 private static int nAge;
16 //實體成員變數
17 private string strName;
18 public static void Run()
19 {
20 Console.WriteLine(“我會奔跑!”);
21 }
22 public void Sing()
23 {
24 Console.WriteLine(“我會唱歌”);
25 }
26 }
當類第一次被加載的時候(就是該類第一次被加載到記憶體當中),該類下面的所有靜態的成員都會被加載。實體成員有多少物件,就會創建多少物件。
而靜態成員只被加載到靜態存盤區,只被創建一次,且直到程式退出時才會被釋放。
看下面的代碼:
01 class Program
02 {
03 static void Main(string[] args)
04 {
05 Person p = new Person();
06 Person p1 = new Person();
07 Person p2 = new Person();
08 }
09 }
10
11 class Person
12 {
13 //靜態成員變數
14 private static int nAge;
15 //實體成員變數
16 private string strName;
17 public static void Run()
18 {
19 Console.WriteLine(“我會奔跑!”);
20 }
21 public void Sing()
22 {
23 Console.WriteLine(“我會唱歌”);
24 }
25 }那么在記憶體中發生了什么呢?如下圖:
由上面顯然可知,定義靜態的成員是可以影響程式的執行效率的。那么什么時候定義靜態的成員變數呢?
①變數需要被共享的時候②方法需要被反復的呼叫的時候
uj5u.com熱心網友回復:
我是初學者,想問是不是可以這么理解。像System.Console.WriteLine(); 難道我用它還要new一次嗎?
像MessageBox.Show(); 難道我用它還要new一次嗎?
所以設成靜態,直接就用。
上面的太理論,學院派了。
uj5u.com熱心網友回復:
執行時,無需背景關系的方法,無需使用內部成員變數的方法,都可以做成靜態方法。至于靜態成員變數,則主要是為了共享方便。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/133006.html
標籤:非技術區
上一篇:cefsharp 截取頁面修改
下一篇:AE擦除
