有没有办法可以传入对象的引用,在我的方法中操作它直接更改引用的对象?
例如,我想将一个下拉列表传递给我的方法,操纵它并完成。此方法将采用任何下拉列表:
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。那我该怎么做呢?我将删除列表中的一些值。这将是一个很好的实用方法,所以我不必为我将要在该方法中执行的此功能重复此代码。
答案 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修饰符。