Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.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
通过C#调用使用可选参数调用Visual Basic函数_C#_Vb.net - Fatal编程技术网

通过C#调用使用可选参数调用Visual Basic函数

通过C#调用使用可选参数调用Visual Basic函数,c#,vb.net,C#,Vb.net,我正在使用客户端程序与另一层上的Visual Basic代码交互。Visual Basic函数签名如下所示: Public Sub toggleExclusion( _ ByVal mouse As Double, _ ByVal study As Integer, _ Optional ByVal box As Integer = 0) 当我从C#这样称呼它时: 我得到一个错误,说toggleExclusion的重载方法不接受两个参数。为什么?这取决于C版本。较旧的C

我正在使用客户端程序与另一层上的Visual Basic代码交互。Visual Basic函数签名如下所示:

Public Sub toggleExclusion( _
    ByVal mouse As Double, _
    ByVal study As Integer, _
    Optional ByVal box As Integer = 0)
当我从C#这样称呼它时:


我得到一个错误,说toggleExclusion的重载方法不接受两个参数。为什么?

这取决于C版本。较旧的C#版本还不支持可选参数——您始终需要指定所有参数。因为也支持C#4可选参数。

一个解决办法是传递可选参数-因为它有一个默认值,只要传递它就不会丢失。

您可能可以使用
System.Reflection.Missing.Value
。我不确定它是否适用于Visual Basic调用。

C#4是添加可选参数的地方,我相信。如果传入,则采用传入值,而不是可选默认值。如果可选默认值恰好是default(T),则此选项可以正常工作,但如果默认值是
42
,则可能不起作用。在这种情况下,传入的值将覆盖它。
_obj.toggleExclusion(mouse, study)