如果我正在编写一个接受两个列表参数的方法,如下所示:
public void ModifyYourListsHere(List<MyClass1> list1, List<MyClass2> list2)
{
...add and remove from the lists
}
如果我希望调用者理解列表会被修改,我应该将其作为ref
或out
传递吗?或者我只需要记录方法?或者用户是否希望它们可能被修改?
答案 0 :(得分:3)
您绝对不想使用out
,因为这意味着您将在离开方法之前分配变量(编译器实际上会强制执行此操作)。
ref
将允许您重新分配传入的参数(绝对会让用户感到困惑)。你几乎肯定不想使用它。
最好的方法是首先选择一个好的方法名称,这样可以明显地修改一个或两个列表的内容。然后使用///注释,以便函数的用户可以在Intellisense中看到更详细的描述。
的MSDN文档答案 1 :(得分:2)
如果函数可能更改变量指向的List,并且调用者将引用新列表,则使用ref。
如果函数返回调用者在调用之前没有引用的新List,则使用out。只有在函数需要返回多个值时才应该使用它。
如果列表在函数调用之前始终存在,则不应使用ref
或out
。
如果你的功能修改它收到的对象作为参数,总是记录好文件!
答案 2 :(得分:0)
如果您想要修改第一个列表,那么您必须使用ref
关键字,并且调用者将知道他必须在列表前使用ref
,否则该方法将被加下划线红线说有错误。
您还可以使用ref关键字传递引用类型。通过引用传递引用类型使被调用方法能够修改引用参数引用的对象。对象的存储位置作为引用参数的值传递给方法。如果更改参数的存储位置,则更改基础参数的存储位置。来源:MSDN