瞭解了 java 引用外部變數的作法之後,試想若是能在 inner class 中將變數修改的話,看起來就會變得很奇怪了,這會讓人以為在 inner class 中的對外部變數的修改會在 inner class 外的 scope 生效,但所謂的引用只是副本,修改的也只是副本而已
既然如此,就乾脆定義只有 final 變數能被 inner class 引用,這樣就不能在 inner class 內修改變數,也不會讓人誤解
不過在 C# 中情況就不一樣了,C# 跟 java 的不同是 C# 為了開發便利,compiler 會幫你做很多事,在 C# 中 inner class 引用外部變數就真的是實際持有這個外部變數,在 inner class 中不但可以修改外部變數,而且修改後的結果在 inner class 外也可以真的看到
沒有留言:
張貼留言