繁体   English   中英

C#传递列表参数

[英]C# passing List parameter

如果我正在编写一个接受两个列表参数的方法,如下所示:

public void ModifyYourListsHere(List<MyClass1> list1, List<MyClass2> list2)
{
    ...add and remove from the lists
}

如果我想让调用者了解列表将被修改,我应该将它们作为ref还是传递out 还是只需要记录该方法? 还是用户应该期望它们会被修改?

您绝对不希望使用out ,因为这意味着您将在离开方法之前分配变量(编译器实际上将强制执行此操作)。

ref将允许您重新分配传入的参数(肯定会使用户感到困惑)。 您几乎可以肯定也不想使用它。

最好的方法是首先选择一个好的方法名称,这样可以很明显地修改一个或两个列表的内容。 然后使用///注释,以便该函数的用户可以在Intellisense中看到更详细的描述。

如果您有兴趣,请参考MSDN文档以获取参考资料参考资料。

如果函数可以更改变量指向哪个列表,则调用ref,并且调用者应引用新列表。

如果函数返回一个新列表,则调用者在调用之前没有引用,请使用它。 仅在函数需要返回多个值时才应使用此选项。

如果List在函数调用之前始终存在,则不应使用refout

如果您的函数修改了它作为参数接收的对象,请务必记录良好!

如果要修改第一个列表,则必须使用ref关键字,并且调用方将知道他必须在列表之前使用ref ,否则该方法将以红线加下划线,表示存在错误。

更新

您也可以使用ref关键字来传递引用类型。 通过引用传递引用类型,使调用的方法可以修改引用参数所引用的对象。 对象的存储位置作为参考参数的值传递给方法。 如果更改参数的存储位置,则更改基础参数的存储位置。 资料来源: MSDN

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM