2

因此,例如我有这个方法:LoadFunkyInfo(byval funkyData as string)我通过它是这样的:LoadFunkyInfo(giantTable.Rows.Item(0).Item("blahName"))。我应该这样做吗?

dim foo as string = giantTable.Rows.Item(0).Item("blahName")
LoadFunkyInfo(foo)

我很久以前在某处读过,最好将方法分配给变量并将该变量传递给方法,而不是将方法作为参数传递。这仍然是真的吗?还是完全正确?

注意:我使用的是 VB.Net 3.5

4

5 回答 5

5

您不是在传递方法,而是在传递调用方法的结果。引入临时变量的唯一好处是帮助您进行调试:如果您在第二行设置断点,您将能够看到传递给LoadFunkyInfo. 除此之外,这两个调用是相同的。

于 2012-05-21T19:06:34.093 回答
4

首先,您没有将方法作为参数传递。您将从方法返回的值作为参数传递。

其次,它主要是可读性问题。我个人发现在大多数情况下首先将值分配给变量更具可读性。

于 2012-05-21T19:05:50.070 回答
3

执行后者(分配给临时变量)有助于调试。

它允许您在分配上设置断点并查看结果。

一些编译器会将带有临时变量的版本转换为没有使用某些优化标志(比如发布而不是调试)构建的版本。

通过的值不是方法——它是从方法返回的值,就像临时变量一样——它被分配返回的值,然后该值作为参数传递。

于 2012-05-21T19:06:06.230 回答
3

我认为这主要取决于您是否要多次使用第一个函数返回的数据。例如,如果您有这样的事情:

LoadFunkyInfo(giantTable.Rows.Item(0).Item("blahName"))
LoadOtherFunkyInfo(giantTable.Rows.Item(0).Item("blahName"))

那么最好将返回值存储起来,而不是调用两次方法:

dim foo as string = giantTable.Rows.Item(0).Item("blahName")
LoadFunkyInfo(foo)
LoadOtherFunkyInfo(foo)

否则不需要存储该值。

于 2012-05-21T19:07:23.250 回答
2

这是一个品味问题,以及您认为最容易阅读的内容。编译成完全相同的代码。对于给出的示例,我不希望看到瞬态变量“foo”,并且通常定义变量只是为了在下一个语句中传递它们是不雅观的。但是,函数调用有很多参数,而参数是其他名称很长的函数,那么这也很难阅读。

我会说只有在消除代码中的歧义时才使用它。

于 2012-05-21T19:10:57.983 回答