2009-10-20 78 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