[英]variable in static methods inside static class
請考慮以下代碼:
1)public static class MyClass
2){
3) public static DateTime MyMethod(DateTime dt)
4) {
5) DateTime temp = new DateTime();
6) temp = dt.AddDays(1);
7) return temp;
8) }
9)}
每次調用MyMethod
temp
變量都有實例嗎? 或者因為它在靜態類中的靜態方法中只有一個temp
變量實例在內存中分配?
謝謝
temp
既不是靜態變量也不是實例變量,它是局部變量。 聲明它的方法是否為靜態絕對無關緊要:變量的范圍從其聲明點開始,並在聲明它的范圍的結束大括號}
結束。 通過MyMethod
每個執行線程都獲得自己的temp
副本,該變量在變量范圍之外的任何地方都是不可見的。
每次調用MyMethod時,temp變量都有實例嗎?
如果你的意思是“每次調用MyMethod
都會獲得一個單獨的temp
變量嗎?” 那么答案是肯定的。
它是靜態類中的靜態方法這一事實無關緊要 - 它是一個局部變量,因此每次調用時都會得到一個“新的”局部變量。
temp
每個調用有一個實例。
順便說一下,我缺少在靜態方法中定義靜態局部變量的可能性,就像在C ++中一樣。
臨時變量,即使在靜態方法中,也必須聲明為靜態,否則它只是在該實例中本地創建,然后在方法調用結束時被吹走。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.