靜態類 靜態方法 靜態成員和例項成員的比較

2022-02-24 14:28:10 字數 1523 閱讀 4797

任何專案中都會使用到靜態類、靜態方法、靜態成員和例項成員了。那麼這幾個名詞到底有哪些區別呢?

所以例項成員的存在必須要有物件例項的存在,如果物件例項都不存在了,那麼就將無法訪問;而靜態成員只是依賴於類的存在與否,也就無需宣告和例項化物件了。

如下方這段示例:

class program

}class mystatictext

public void myexamplemethod()

}static class mystaticclasstext

public static string getstuname()

}

最後的輸出結果為:

我們知道,對於類有很多修飾符,如public,同時,類也可以宣告為static,表示它僅可以包含靜態成員。不能例項化來創造類的例項。比方說,在有些特定業務中,不需要操作例項資料也不與**中特定物件關聯。那麼此時,就需要使用靜態類來包含特定的方法。

靜態類的主要功能如下:

專案中使用靜態類的優點在於,對於靜態類的建立,編譯器能夠執行檢查以確保不會偶然的新增例項成員。同時,靜態類時密封的,因此也不允許被繼承。

如下方**示例:

static class mystaticclasstext

public static string getstuname()

}

對於乙個類中的靜態成員和非靜態成員到底有哪些區別呢?

語法區別:靜態成員需要static關鍵字修飾,而非靜態成員可以不需要。

儲存區別:對於靜態成員而言,它是儲存在程式中全域性變數儲存區中,並且在整個程式執行期間只在記憶體中有乙個位置,既不會拷貝也不會複製。

歸屬區別:靜態成員屬於類的成員變數,無論對乙個類例項化多少次,這個類的靜態成員都只有乙個副本,程式中各個地方對它的呼叫都會改變它的值;而非靜態成員屬於他的物件,各自物件對自身例項的改變不會各自影響。

初始化順序的區別:初始化時首先初始化類的靜態成員,然後才是非靜態成員。

根據上述內容,下面示例**的輸出是多少呢?

class program

static void main(string args)

", i);

program program = new program();

console.writeline("j=", program.j);

console.writeline("i=", i);

console.readkey();}}

輸出結果為:

以上就是對靜態方法、靜態成員、靜態類和例項成員的比較。有不對的地方請大家指正或者一起交流。

靜態成員 靜態方法 靜態類

1.靜態成員屬於類所有,非靜態成員屬於類的例項所有,即使用靜態成員不需要例項化 using system using system.collections.generic using system.linq using system.text namespace mystatic public cl...

C 靜態成員 靜態方法 靜態類

c 靜態方法與非靜態方法的區別不僅僅是概念上的,那麼他們有什麼具體的區別呢?讓我們通過本文向你做一下解析。c 的類中可以包含兩種方法 c 靜態方法與非靜態方法。那麼他們的定義有什麼不同呢?他們在使用上會有什麼不同呢?讓我們來看看最直觀的差別 使用了static 修飾符的方法為靜態方法,反之則是非靜態...

類靜態成員和類靜態成員函式

當將類的某個資料成員宣告為static時,該靜態資料成員只能被定義一次,而且要被同類的所有物件共享。各個物件都擁有類中每乙個普通資料成員的副本,但靜態資料成員只有乙個例項存在,與定義了多少類物件無關。靜態方法就是與該類相關的,是類的一種行為,而不是與該類的例項物件相關。靜態資料成員的用途之一是統計有...