當堆棧中的呼叫者較高時,這是什麼意思?例如,讓我說我開始一個程序,一個表單加載(我們將這個稱爲a),然後這個表單調用另一個表單(b)。被調用的表單將位於堆棧的頂部,所以如果這個表單稱爲表單a,這是否會成爲堆棧中更高的調用者,從而調用下面的某個東西?撥打電話的呼叫堆棧中的某些東西
感謝
當堆棧中的呼叫者較高時,這是什麼意思?例如,讓我說我開始一個程序,一個表單加載(我們將這個稱爲a),然後這個表單調用另一個表單(b)。被調用的表單將位於堆棧的頂部,所以如果這個表單稱爲表單a,這是否會成爲堆棧中更高的調用者,從而調用下面的某個東西?撥打電話的呼叫堆棧中的某些東西
感謝
您需要進行調用(如果有的話)對象之間的區別,呼叫的目標和方法被調用。例如,您的調用堆棧可以很容易地是這樣的:
FormA.Method3()
FormB.Method2()
FormA.Method1()
這是備考的執行方法1的實例,調用方法2上FormB的一個實例。然後在FormA的實例上調用Method3 - 或者與第一個FormA相同,或者不同。這並不重要。
這不是真的叫「下面的東西」的情況下,因爲堆棧幀不代表對象 - 它們代表方法(和這些方法中的狀態)。這是否有幫助,還是隻是混淆了更多的東西?
我認爲你必須調用堆棧的錯誤印象。調用stach只是被調用函數的「列表」。當OU有一個調用鏈像你描述的,一個電話B的調用,你的籌碼就是:
a.second
b.first
a.first
你真的不能稱之爲「下降」的東西。你做了另一個調用,它在堆棧頂部,即使它之前被調用過,前一個調用完全不同,新調用開始一個全新的「堆棧幀」。
wtf你的意思是表單? – 2009-01-11 17:31:17