[英]Optional VB Parameters are required in C#
與此類似,但有一點扭曲。
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
)
錯誤164方法'MyFunc'沒有重載需要2個參數
元數據顯示的功能是:
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節:
帶有default-argument的 fixed-parameter稱為可選參數 。
...
ref
或out
參數不能具有default-argument 。
例外情況是COM,其中ref
參數非常常見。 當C#編譯器知道它在處理一個COM組件,它可以讓你忽略可選ref
參數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.