2011-05-01 57 views
3

我可能独自一人在此;但我总是有这样的印象:在.NET中,当你调用一个函数时,你必须以与该方法相同的顺序传递值。参数按名称或按顺序?

例子:

Public Sub DoSomething(ByVal A as String, ByVal B as String) 
End Sub 

DoSomething("First Param", "Second Param") 

我最近才知道,你可以按名称指定PARAMS:

DoSomething(B:="Second Param", A:="First Param") 

我的问题可能是一个愚蠢的,但什么是最好的做法是什么?我见过的所有东西都只是按照正确的顺序调用params的方法 - 命名约定是从VB中遗留下来的一个旧约吗?如果我在我的所有方法调用中使用:=语法,在下一次代码审查期间人们会笑吗?

你有没有例子使用:=真的有道理?或者它总是只是一个偏好的东西?

回答

3

如果你还没有看过here呢,看看(认为它是关于C#,尽管相同的原则)。

基本上命名的参数旨在使使用可选参数更容易。假设你有一个有3个必需参数和12个可选参数的方法(如一些COM API)。您可能有兴趣重写其中一个可选参数,并将其余部分作为默认值。使用命名参数你可以做到这一点。另一种方法是通过nullType.Missing来选择你不关心重写的参数。

还有这个相关的问题:Usage of named parameters(再次C#,但相同的原则)。

1

有一些方法,这是有道理的使用命名的参数,如MVC的观点缓存属性...

而不是

(3600, null, null, null, null, null, null, null, "id") 

可以使用

(time:=3600, target:="id") 

这里另一个例子:

send just what you need method

基本上你只在需要时才使用它们,它们是可选参数...

+0

真的很不错的例子,截图的道具。 – R0MANARMY 2011-05-01 01:07:07