1樓:網友
類中定義的靜態變數,是屬於類而不屬於例項的(稱為類變數)。類變數的特點是:不用例項化類就可以用。例如:
public class myclass
public static int max; /類變數。
public int value; /例項變數。
類變數不需要例項化類就可以直接使用:
200; /不用例項化myclass就可以用類中的靜態變數max
而變數value是例項變數,與max不同,必須例項化myclass後,才能使用變數value
myclass o = new myclass();例項化。
200; /通過例項,使用變數value
在你的問題中,在類form1中的靜態變數:
private static int i = 0;
private static bitmap bitimg = null;
private static string imgpath = c:\";
private static string txtpath = c:\";
同樣是屬於類變數,只是被private限制在類中使用。
至於哪個好呢?很難說類變數好還是例項變數好。只要你明白類變數和例項變數差別,就可以根據它們的特點來使用。o(∩_o~
2樓:網友
看情況了,如果是單純的為了在全域性用的話不需要。
如果是在很多的類或者窗體中需要用到的話就需要了。
靜態的概念就是:程式執行後一直存在於記憶體中。
非靜態的概念就是:執行後需要用到就分配記憶體,不需要就不分配。
3樓:網友
就你的問題來:
如果你就在方法內部使用,bitimg 和 i 放在方法中,並且不用靜態的是最好的。
關於c#中的靜態建構函式和靜態成員
4樓:網友
首先說一下理論:靜態建構函式是實現乙個類進行初始化方法成員。它一般對於靜態函式初始化。
靜態建構函式不能有引數(意味著不能被過載),不能有修飾符(靜態構造器永遠是私有的所以不能有修飾符)不能被呼叫,當類被載入時類的靜態建構函式被自動呼叫。用static關鍵字宣告。
靜態建構函式的執行準則:
1、在乙個程式執行過程中,靜態建構函式值執行一次2、靜態構造器在類的靜態成員初始化之後執行。或者講編譯器會將靜態成員初始化語句轉換成賦值語句放在靜態構造器執行的最開始。如:
下面那個類裡面。
class a
這個類為了給這個靜態成員初始化,會自動建立乙個靜態構造器,如果不給i賦值,就不會自動建立那個靜態構造器。
3、靜態構造器在任何類的靜態成員被應用之前執行class a
public a()
class program
的列印結果為。
靜態100()說明了第三點。
4、靜態構造器在任何類的例項變數被分配前執行class a
public a()
class program
列印結果為。
靜態動態。動態(說明了第一點和第四點)
靜態構造器最主要作用就是對類的靜態成員進行初始化。
5樓:匿名使用者
意思很簡單,就是靜態成員不需要例項化,可以通過類名加構造去呼叫他。
6樓:網友
靜態建構函式可以給靜態欄位賦值。
類的靜態建構函式在給定應用程式域中至多執行一次:
只有建立類的例項或者引用類的任何靜態成員才激發靜態建構函式靜態建構函式是不可繼承的,而且不能被直接呼叫也就是說建立類的例項時不能用靜態建構函式,它是自動執行的。
7樓:網友
在給靜態欄位賦值時候靜態建構函式起作用。
8樓:網友
其實靜態建構函式的作用就是初始化。。而靜態成員的話,需要用類才可進行訪問。。
c如何呼叫c靜態庫,C 如何呼叫c 靜態庫 lib
可以用clr 新 或者managed c 老 將lib封裝成managed dll供c 直接呼叫。將lib封裝成native dll,c 中通過dllimport呼叫dll。將lib封裝成native dll,再用clr封裝native dll成managed dll供c 直接呼叫。將lib封裝為c...
c 語言中類中的靜態資料成員為什麼必須在類體外初始化
可以通過以下幾個例子更形象的說明這個問題 test.cpp include class a int main 編譯以上 會出現 對 a a 未定義的引用 錯誤。這是因為靜態成員變數a未定義,也就是還沒有分配記憶體,顯然是不可以訪問的。再看如下例子 test.cpp include class a i...
全域性變數和區域性變數的區別,全域性變數 靜態全域性變數 靜態區域性變數和區域性變數的區別
一 用途不同 全域性變數 描述物件有什麼 在類中定義 類中所有方法都可以使用。區域性變數 臨時儲存資料 在類的方法中定義 只能在當前方法中使用。二 使用不同 全域性變數 整個類中可用 區域性變數 該方法內可用 三 初始值不同 全域性變數 有初始值 區域性變數 無初始值 擴充套件資料 使用全域性變數會...