有什麼本質上的是「參考」點在物體通過由參
public function Foo(ref Bar bar)
{
bar.Prop = 1;
}
public function Foo(Bar bar)
{
bar.Prop = 1;
}
之間的差異。是不是一直引用的對象?
有什麼本質上的是「參考」點在物體通過由參
public function Foo(ref Bar bar)
{
bar.Prop = 1;
}
public function Foo(Bar bar)
{
bar.Prop = 1;
}
之間的差異。是不是一直引用的對象?
問題是,你永遠不會通過一個對象。您通過參考 - 而參數本身可以通過引用或值傳遞。如果你改變參數值本身,它們的行爲會有所不同,例如將其設置爲null
或另一個參考。用ref
這個改變會影響調用者的變量;沒有ref
它只是一個拷貝被傳遞的值,所以調用者看不到他們變量的任何改變。
查看my article on argument passing瞭解更多詳情。
是的。但如果你這樣做:
public function Foo(ref Bar bar)
{
bar = new Bar();
}
public function Foo(Bar bar)
{
bar = new Bar();
}
然後你會看到不同之處。第一個傳遞給引用的引用,所以在這種情況下bar會變成你的新對象。第二,它沒有。
我想你的意思是「argumetn本身可以通過引用或值傳遞」,而不是「通過參數或值」。或者我的詞彙錯了? – erikkallen 2009-04-08 11:22:35