回覆列表
-
1 # 666摩羯666
-
2 # 大國師魂系列
vba全域性變數前加上static關鍵字,就定義了一個靜態全域性變數。通常情況下,靜態全域性變數的宣告和定義放在原始檔中,並且不能使用extern關鍵字將靜態全域性變數匯出,因此靜態全域性變數的作用域僅限於定義靜態全域性變數所在的檔案內部。
普通全域性變數的作用域是整個工程,在標頭檔案中使用extern關鍵字宣告普通全域性變數,並在原始檔中定義,其他檔案中只要使用#include包含宣告普通全域性變數的標頭檔案,就可以在當前檔案中使用普通全域性變數。
如果在標頭檔案中宣告靜態全域性變數,靜態全域性變數在宣告的同時會被初始化,如果靜態全域性變數沒有顯示地初始化為預設值,相當於在標頭檔案中同時完成宣告和定義,而普通全域性變數不能直接定義在標頭檔案中。
-
3 # 曉梅10068
靜態域變數的作用為:
定義它在此檔案內有效, 在同一源程式的其它原始檔中不能使用它。
譬如:
static方法一般稱作靜態方法,由於靜態方法不依賴於任何物件就可以進行訪問,因此對於靜態方法來說,是沒有this的,因為它不依附於任何物件,既然都沒有物件,就談不上this了。並且由於這個特性,在靜態方法中不能訪問類的非靜態成員變數和非靜態成員方法,因為非靜態成員方法/變數都是必須依賴具體的物件才能夠被呼叫。
靜態變數使用 static 修飾符進行宣告,在類被例項化時建立,透過類進行訪問不帶有 static 修飾符宣告的變數稱做非靜態變數。
static變數在物件被例項化時建立,透過物件進行訪問一個類的所有例項的同一C#靜態變數都是同一個值,同一個類的不同例項的同一非靜態變數可以是不同的值。
靜態函式的實現裡不能使用非靜態成員
C#靜態方法及屬性在程式啟動的時候,就全部裝入記憶體的,而不管這些方法、屬性以後有沒有用到。即使是沒有人再訪問程式,這部分記憶體仍然不會釋放還有就是,所有訪問者看到的靜態屬性的資料幾乎都是一樣的,比如A使用者設定了UserName這個屬性,B使用者訪問的時候,得到的UserName仍然是A使用者設定的那個。這種特性,如果用在固定資料中,那不會有太大問題,比如連線字串之類的