如何在下拉标签中引用ByRef和ByVal?[关闭]


9

关于MSDN页面ByRefByVal关键字不是很有帮助;除非我以某种方式略过它,否则它们到处都被简单地称为“关键字”。

Rubberduck项目的主要贡献者之一是进行非常酷的Encapsulate Field重构,并且UI进行得非常好..除了我对ByRef/ 下拉菜单上方的标签有问题ByVal,它说“ Accessibility”:

Rubberduck的“封装字段”重构对话框

我不喜欢“辅助功能”,因为我用它在其他地方Public/ Private/ Friend访问修饰符在那里感觉更准确。

我不想使用“修饰符”,因为IMO只是“访问修饰符”的缩写。

我希望该标签准确无误,但我的词汇表显然缺乏,而且我不知道该怎么称呼这些关键字。

这个标签应该说什么呢?我在找什么字?ByRef/ ByVal属于什么“关键字家族” ?


2
就像其中一条评论所说的那样,它根本不应该存在-ByRef的属性有点疯狂。即使有可能,这也是邪恶的-允许您在呼叫者不知情的情况下更改其变量。
jmoreno

“ VB宇宙”中的许多文档(因此,不是专门针对VBA)似乎都将其称为“传递机制”。
Damien_The_Unbeliever 2015年

@jmoreno我完全同意。我将无法将其ByVal更改为ByRef手动编辑生成的代码,并“解决问题”!VBA可以编译大量有害的废话,您知道:-)我仍然喜欢在网上终于找到一个在这些关键字上加上名称的地方。
Mathieu Guindon 2015年

Answers:


14

在这种情况下,我将使用“传递为”(或“传递”)。

您的流程与此用法完全匹配。

  • 变量名称:foo
  • 通过: ByVal / 通过: ByRef

这完全适合您的工作流程,顺便说一句,这正是您所引用的文章所指示的内容。

当您仔细阅读选项时,使用“传递为”时,它读起来很完美,因为您可以简单地阅读标题并选择适当的文本-“'变量名称'foo,'传递为'值”。

如果你想让它稍微读好你可以把“价值”和“参考”,这取决于你的列表选项,如果你的目标受众是VBA编程或非VBA程序员谁可能是稍微为ByVal和关键字的ByRef不太熟悉。

或者,将其更改为“通过:”,然后在下拉菜单中将其设置为“按引用(ByRef)”和“按值(ByVal)”。您的下拉菜单似乎有空间显示所有这些文本。或者只是ByRef / ByVal关键字。


我会使用“ ByPass 传递”或“ 值传递”。“通过ByVal”听起来很奇怪。
user253751

@immibis打个招呼!
enderland

3
另外,鉴于选择的范围太小,您可能会考虑使用单选按钮而不是下拉菜单。
Kyralessa

@Kyralessa也是我在聊天中告诉Mat的。我认为这是他们进行最终设计的目的:-)
enderland


3

“通过语义传递”可能最接近您要寻找的内容。


哎呀,我偷了我迅速交货的帽子!哎呀!
吉米·霍法

2
我已经有一个,很乐意为您提供这个……
Oded

3

最精确和正式的术语是“别名”。

ByRef使用时,函数内部的名称是调用者的变量的别名-所有更改任何一个被立即向其他可见。使用时ByVal,函数内部的名称是调用方变量的唯一副本(当然,调用方和函数的副本都可以引用同一对象,但是它们的区别在于,在函数内部重新分配参数不会重新分配调用方的变量)。

选项将是

  • 别名(ByRef
  • 复制(ByVal

一些平台增加了第三种可能性,即对调用者的变量进行别名别名,但不允许使用多个参数为重叠对象别名。(C restrict关键字背后的想法,也可以在IDL中找到它,attribute关键字为unique)。.NET没有很好的方法来编码这些知识。


-1

我将其称为“ [参数]类别”。

该自变量具有名称,类型和类别。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.