【问题标题】:Calling a Visual Basic function with optional parameters with a C# call使用 C# 调用调用带有可选参数的 Visual Basic 函数
【发布时间】:2010-11-03 15:10:33
【问题描述】:

我正在使用客户端 C# 程序与不同层上的 Visual Basic 代码进行交互。 Visual Basic 函数签名如下所示:

Public Sub toggleExclusion( _
    ByVal mouse As Double, _
    ByVal study As Integer, _
    Optional ByVal box As Integer = 0)

当我这样从 C# 调用它时:

_obj.toggleExclusion(mouse, study)

我收到一条错误消息,提示 toggleExclusion 的重载方法没有两个参数。为什么?

【问题讨论】:

    标签: c# vb.net


    【解决方案1】:

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

    【讨论】:

    • 我相信 C# 4 是添加可选参数的地方。
    【解决方案2】:

    一种解决方法是传递可选参数 - 因为它有一个默认值,所以如果你只传递它就不会丢失。

    【讨论】:

    • 如果它被传入,它接受传入的值,而不是可选的默认值。如果可选的默认值恰好是 default(T),这可以正常工作,但如果默认值为 42,则可能无法正常工作。在这种情况下,传入的值会覆盖它。
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-24
      • 2021-11-30
      • 2023-03-03
      • 2011-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多