2009-10-20 124 views
1

有沒有一種方法可以傳入對象的引用,在直接更改引用對象的方法中操作它?操縱引用對象

例如,我想將一個下拉列表傳入我的方法,操縱它並完成。這種方法是要採取任何下拉列表:

public static void MyMethod(Dropdownlist list1, ref DropdownList list2) 
{ 
    // just manipulate the dropdown here... no need to returnit. Just Add or remove some values from the list2 
} 

很明顯,我不能只通過一個下拉列表對象列表2。那我該怎麼做?我將刪除列表中的一些值。這將是一個很好的實用方法,所以我不必在這個地方重複使用這個代碼來實現我將要在這個方法中執行的這個功能。

+0

記住這一點的方法是,「ref」或「out」參數實際上是對*變量*的引用,而不是對*對象的引用。也就是說,當你有一個方法M(ref int y)並且你叫它M(ref x)時,你所說的是「y現在是變量x的別名」。 – 2009-10-20 17:51:14

回答

2

如果您在單個引用類型上操作內部數據,那麼您在方法簽名上不需要任何特殊的內容。將一個引用類型的對象傳遞給方法時,您不傳遞副本。而是傳遞對象的引用。操作此引用將更改原始對象。

void MyMethod(List<string> list) { 
    list.Add("foo"); 
} 

void Example() { 
    List<string> l = new List<sting>(); 
    MyMethod(l); 
    Console.WriteLine(l.Count); // Prints 1 
    MyMethod(l); 
    Console.WriteLine(l.Count); // Prints 2 
} 

現在,如果您想更改原始參考指向的位置,您需要一個參考修飾符。

2

DropDownList是一個引用類型,所以你應該能夠將一個實例傳遞給你的方法並對其進行處理。 (方法內引用的對象是原始實例的)。

+0

非常感謝!我知道了。 – PositiveGuy 2009-10-20 16:29:26