簡體   English   中英

靜態類中的靜態方法中的變量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM