2016-02-16 39 views
3

真的,这一切都在主题中。ByRef和Output方法参数修饰符有什么区别?

我看不到行为有什么区别这两种方法之间的x

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

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

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

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

回答

7

那么这些只是“美化剂”,它们在实际的语言行为方面做得并不多,只是用来提供文档。想法是,记录为ByRef的参数提供了输入和输出,例如,您可以传递数组进行排序,输出参数仅提供输出,例如错误列表。后面介绍了输出修饰符,并且很多系统代码仍然使用ByRef来处理这两种用例。

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

相关问题