class A{ void Method(){ //do sth. }}對于上面這個類,我如何知道 調用method 方法的 對象是哪個?。咳?我創建了兩個對象A a1=new A();a1.Method();A a2=new A();a2.Method();我在Method方法里如何知道是a1調用的 還是a2調用的呢?也就是說 ,我想在Method里面 獲取 調用該方法的實例對象,不知道各位看管聽明白了沒
2 回答

慕哥9229398
TA貢獻1877條經驗 獲得超6個贊
你可以在方法體里用this獲取到當前對象,但是你無法獲取到當前對象的“變量名”。舉個例子很容易明白:
class A { public void Method() { //this 代表當前實例 } }
在Method()中,this代表當前實例,當前實例是堆上的一個唯一的對象,而在棧上可能有99個變量都指向這個對象。
A a1 = new A(); A a2 = a1; A a3 = a1; A a4 = a1; ... A a99 = a1; a99.Method();
無論是哪個變量調用Method方法,它們指向的堆上的同一個實例,因此對于Method來說,它們沒有不同,因此在Method中的this也沒有不同。再從另外一方面來反證,假設你可以輸出變量名,那么請問這句的輸出是什么:
new A().Method();
- 2 回答
- 0 關注
- 633 瀏覽
添加回答
舉報
0/150
提交
取消