任何專案中都會使用到靜態類、靜態方法、靜態成員和例項成員了。那麼這幾個名詞到底有哪些區別呢?
所以例項成員的存在必須要有物件例項的存在,如果物件例項都不存在了,那麼就將無法訪問;而靜態成員只是依賴於類的存在與否,也就無需宣告和例項化物件了。
如下方這段示例:
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時,該靜態資料成員只能被定義一次,而且要被同類的所有物件共享。各個物件都擁有類中每乙個普通資料成員的副本,但靜態資料成員只有乙個例項存在,與定義了多少類物件無關。靜態方法就是與該類相關的,是類的一種行為,而不是與該類的例項物件相關。靜態資料成員的用途之一是統計有...