操纵引用对象

时间:2009-10-20 16:16:26

标签: c#

有没有办法可以传入对象的引用,在我的方法中操作它直接更改引用的对象?

例如,我想将一个下拉列表传递给我的方法,操纵它并完成。此方法将采用任何下拉列表:

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
}

显然我不能只将dropdownlist对象传递给list2。那我该怎么做呢?我将删除列表中的一些值。这将是一个很好的实用方法,所以我不必为我将要在该方法中执行的此功能重复此代码。

2 个答案:

答案 0 :(得分:2)

DropDownList是一种引用类型,因此您应该只能将一个实例传递给您的方法并对其进行操作。 (方法中引用的对象是原始实例。)

您甚至不需要指定ref修饰符,只要您只更新现有对象,而不是替换它。

答案 1 :(得分: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
}

现在,如果你想改变原始参考指向的位置,你需要一个ref修饰符。