所以我有一个基类和一个继承类。
BASE CLASS
Friend Overridable Overloads Sub ProcessRecords(ByVal oDataKeyValuePair As KeyValuePair(Of String, Dictionary(Of String, Double)), ByVal oFilterValues As SDFilterCriteria.FilterType)
'does stuff'
End Sub
Friend Overridable Overloads Sub ProcessRecords(ByVal oDataKeyValuePair As KeyValuePair(Of String, Dictionary(Of String, Double)), ByVal oFilterValues As SDFilterCriteria.FilterType, Optional ByVal MaxCount As Integer = 0)
'does stuff'
End Sub
儿童类
Friend Overloads Overrides Sub ProcessRecords(ByVal oDataKeyValuePair As KeyValuePair(Of String, Dictionary(Of String, Double)), ByVal oFilterValues As SDFilterCriteria.FilterType, Optional ByVal MaxCount As Integer = 0)
'does other stuff
End Sub
但是当我建立时,我得到了
错误6
'朋友覆盖重载Sub ProcessRecords(oDataKeyValuePair As System.Collections.Generic.KeyValuePair(Of String, System.Collections.Generic.Dictionary(Of String,Double)), oFilterValues As SharedModels.FilterCriteriaBase.FilterType,[MaxCount 如整数= 0])' 无法覆盖' Friend Overridable Overloads Sub ProcessRecords(oDataKeyValuePair As System.Collections.Generic.KeyValuePair(Of String, System.Collections.Generic.Dictionary(Of String,Double)), oFilterValues As SharedModels.FilterCriteriaBase.FilterType)'的因为 它们因可选参数而异。
我有一种感觉,因为超载,但我似乎无法弄清楚。
答案 0 :(得分:2)
这是因为除了可选参数,两个方法签名都是相同的。因此,如果您在未指定最后一个参数的情况下调用该方法,则无法告诉您要调用哪个方法。您是使用可选参数调用那个但省略了可选参数,还是调用了没有参数的方法?
答案 1 :(得分:0)
错误消息很明确。编译器认为您希望在没有可选参数的情况下覆盖重载方法。
我认为你应该在没有基类的可选参数的情况下删除重载方法,因为它无论如何都没有任何意义。
有两种选择:
MaxCount
参数,没有此参数的方法应调用另一个指定所需MaxCount
参数的默认值的方法。MaxCount
参数中。您可以从这些选项中进行选择,以满足您的需求。之后,覆盖应该起作用。