3

真的,一切都在主题中。

我看不出这两种方法之间的行为差​​异是什么x

// first version
Method m(ByRef x As whatever)
{
    // play with x
}

// second version
Method m(Output x As whatever)
{
    // play with x
}

这两个修饰符存在一定有某种原因,但是我对语言的“掌握”(嗯)不足以理解差异。到目前为止,我已经尝试阅读文档、搜索文档等,但无济于事。

那么,这两个参数修饰符有什么区别呢?

4

1 回答 1

7

好吧,这些只是“美化者”,它们在实际语言行为方面并没有做太多,仅用于提供文档。想法是记录为 ByRef 的参数同时提供输入和输出,例如,您可以传递要排序的数组,而输出参数仅提供输出,例如错误列表。输出修饰符是后来引入的,很多系统代码仍然在这两个用例中使用 ByRef。

如果参数实际上是通过引用传递的,则仅由方法调用者确定,而关键字并不重要。您将调用您的方法..m(.parameter)以通过引用传递变量,并..m(parameter)通过值传递变量。

于 2016-02-16T03:55:18.123 回答