Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 使用命名参数与ParamArray冲突_.net_Vb.net_Parameters_Optional Parameters_Named Parameters - Fatal编程技术网

.net 使用命名参数与ParamArray冲突

.net 使用命名参数与ParamArray冲突,.net,vb.net,parameters,optional-parameters,named-parameters,.net,Vb.net,Parameters,Optional Parameters,Named Parameters,我用以下参数编写了一个方法: Sub MethodName(ByVal paramName1 As String, ByVal paramName2 As String, ByVal paramName3 As String, ByVal ParamArray lastParam As String()) End Sub 在上面的代码中,参数的名称只是一个示例, 在我的真实代码中,参数的名称是描述性名称,

我用以下参数编写了一个方法:

Sub MethodName(ByVal paramName1 As String,
               ByVal paramName2 As String,
               ByVal paramName3 As String,
               ByVal ParamArray lastParam As String())
End Sub
在上面的代码中,参数的名称只是一个示例, 在我的真实代码中,参数的名称是描述性名称,我将使用命名的参数对其进行注释,以编写可理解的编码,因此按照上面的示例方法,我将编写如下内容:

MethodName(paramName1:="...",
           paramName2:="...",
           paramName3:="...",
           lastParam:={"...", "..."})
但是,这将失败,编译器错误为,但由于我已经为其他参数编写了命名参数,因此我不能让最后一个参数以这种方式在下面没有名称,因为另一个编译器错误为

MethodName(paramName1:="...",
           paramName2:="...",
           paramName3:="...",
           {"...", "..."})
我认为这是与Microsoft相关的语言语法行为中的设计冲突,因为我能看到他们让程序员解决此场景的唯一方法是这些不恰当的解决方案之一:

  • 编写一个公共参数(可选的
    参数),而不是
    paramary

  • 不要对任何参数使用命名参数

  • 忽略上面代码示例中最后一个参数的用法

可能存在另一个我缺少的解决方案,用于保留带有命名参数的
ParamArray

可能存在另一个我缺少的解决方案,用于保留带有命名参数的
ParamArray

不,没有。有充分的理由-
ParamArray
是一个特殊方法的作者需要考虑的问题。命名参数是方法调用方需要考虑的问题。它们不是在同一个“级别”上运行的,您已经链接到的文档表明,它们不能轻松共存有很好的理由

在构建API帮助文件时,您更喜欢在代码示例中为初学者使用命名参数来表示参数名称,以便更友好地理解每个参数的用途

通常,此类样品应与描述方法的文档放在同一位置。如果它们都在同一个页面上,那么如果用户感到困惑或需要查看定义,则可以轻松地再次找到该定义

相反,决定在整个文档中使用命名参数更容易混淆而不是教育。您的示例代码看起来与Microsoft或其他大多数公司的其他代码示例明显不同。这要么会直接让初学者感到困惑(如果他们还不熟悉命名参数),要么会形成错误的印象,比如“我必须在这个库中使用命名参数。我想知道为什么?”

可能存在另一个我缺少的解决方案,用于保留带有命名参数的
ParamArray

不,没有。有充分的理由-
ParamArray
是一个特殊方法的作者需要考虑的问题。命名参数是方法调用方需要考虑的问题。它们不是在同一个“级别”上运行的,您已经链接到的文档表明,它们不能轻松共存有很好的理由

在构建API帮助文件时,您更喜欢在代码示例中为初学者使用命名参数来表示参数名称,以便更友好地理解每个参数的用途

通常,此类样品应与描述方法的文档放在同一位置。如果它们都在同一个页面上,那么如果用户感到困惑或需要查看定义,则可以轻松地再次找到该定义


相反,决定在整个文档中使用命名参数更容易混淆而不是教育。您的示例代码看起来与Microsoft或其他大多数公司的其他代码示例明显不同。这要么会直接让初学者感到困惑(如果他们还不熟悉命名参数),要么会形成错误印象,例如“我必须在这个库中使用命名参数。我想知道为什么?”

另一种方法:如果你有一个方法需要使用命名参数,也许这是将方法转换为类并使用属性的一个好迹象方法的另一种方法:对传递给方法的变量使用可描述的名称,那么您就不需要命名参数:)为什么“不为任何参数使用命名参数”是一个“不恰当”的解决方案这无疑是大多数方法调用的最常见的方式。@Damien_不信者在构建API帮助文件时非常“笨拙”,在帮助文件中,您更喜欢在初学者的代码示例中使用命名参数来表示参数名,以便更友好地理解每个参数的用途(当然还包括参数文档)。谢谢你的评论。@Fabio也谢谢你的评论,我的参数名已经可以描述了,我只想把它们都用作命名参数。另一种方法:如果你有一个需要使用命名参数的方法,也许这是一个将方法转换为类并使用属性的好迹象。另一种方法是:使用descripable names用于传递给方法的变量,那么您不需要命名参数:)为什么“不为任何参数使用命名参数”是“不恰当”的解决方案这无疑是大多数方法调用的最常见的方式。@Damien_不信者在构建API帮助文件时非常“笨拙”,在帮助文件中,您更喜欢在初学者的代码示例中使用命名参数来表示参数名,以便更友好地理解每个参数的用途(当然还包括参数文档)。谢谢你的评论。@Fabio也谢谢你的评论,我的参数名称已经可以描述了,我只想把它们作为命名参数使用,所有的参数。结论好吗结尾用引号括起来,呵呵,也许真的可以更好地避免使用命名参数。谢谢你的回答。结论好吗结尾用引号括起来嗯,呵呵,也许是r