JNF*_*JNF 8 .net c# vb.net optional-parameters
与此类似,但有一点扭曲.
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
Run Code Online (Sandbox Code Playgroud)
在调用C#时(不同的解决方案,我复制了.dll
)
错误164方法'MyFunc'没有重载需要2个参数
元数据显示的功能是:
public static bool MyFunc(string Name, int Num, ref object obj, int val = 0);
Run Code Online (Sandbox Code Playgroud)
为什么一个人Optional
通过而另一个没有?
C#不支持可选ref
参数.如果你改成obj
一个ByValue
参数,它应该没问题.
如果您尝试在C#中声明可选ref
参数,则会违反C#4规范的第10.6.1节:
甲固定参数用默认参数的被称为一个可选参数.
...
一个
ref
或out
参数不能有default-argument.
例外情况是COM,其中ref
参数非常常见.当C#编译器知道它在处理一个COM组件,它会允许你忽略可选ref
参数.