c# - C# 中需要可选的 VB 参数

标签 c# .net vb.net optional-parameters

类似于this , 但有一个转折点。

VB函数声明:

Public Shared Function MyFunc(ByVal Name As String, ByVal Num As Integer, Optional ByRef obj As Object = Nothing, Optional ByVal val As Integer = 0) As Boolean

在C#中调用时(不同的解决方案,我复制了.dll)

Error 164 No overload for method 'MyFunc' takes 2 arguments

元数据显示函数是:

public static bool MyFunc(string Name, int Num, ref object obj, int val = 0);

为什么一个 Optional 通过了而另一个没有?

最佳答案

C# 不支持可选的 ref 参数。如果将 obj 更改为 ByValue 参数,应该没问题。

如果您尝试在 C# 中声明一个可选的 ref 参数,您将违反 C# 4 规范的第 10.6.1 节:

A fixed-parameter with a default-argument is known as an optional parameter.

...

A ref or out parameter cannot have a default-argument.

COM 异常(exception),ref 参数非常常见。当 C# 编译器知道它正在处理 COM 组件时,它允许您省略可选的 ref 参数。

关于c# - C# 中需要可选的 VB 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17717896/

相关文章:

c# - 使用 C# 从 Visual Fox Pro 数据库中读取数据

.net - 简单的 WCF 调用需要很多时间

vb.net - 有没有办法将字体对话框设置为仅显示个性化的字体集?

c# - 无法使用现有数据库运行 EF5 迁移

c# - 为什么 checkedchanged 事件不会在取消选中 asp.net 中的复选框时触发

c# - 如何验证 CloudStorageAccount 中是否存在 Azure 存储帐户?

c# - 为什么这些枚举不好

.NET DataReader 和 ORDER BY

vb.net - 如何使Winsock在特定端口上监听?

c# - 内联参数化查询超时