.net - 即使签名不同,重载也会产生错误
问题描述
使用 vb.net 我有这个功能:
Public Overloads Function GetCountValues(ByVal CampaignIDValue As String,
ByVal AgentValue As String,
ByVal SearchTerm As String) As Integer
我重载是因为我们在没有 AgentValue 的情况下用这个函数做同样的事情。
Public Overloads Function GetCountValues(ByVal CampaignIDValue As String, ByVal SearchTerm As String) As Integer
但是编译器坚持签名是相同的,即使它们不是。如果我将第二个 CampaignIDValue 更改为“作为对象”,那么在您尝试实际使用它之前就可以了。必须有一些我缺少的东西才能完成这项工作。如果您能提供帮助,我将不胜感激。
其他没有问题:(感谢您的耐心HardCode)。
Public Overloads Function GetCountValues(ByVal AgentValue As String,
ByVal SearchTerm As String) As Integer
Public Overloads Function GetCountValues(ByVal CampaignIDValue As String,
ByVal AgentValue As String,
ByVal LCDATEValue As Date,
ByVal SearchTerm As String) As Integer
如果将对象更改回字符串,这也会产生错误
Public Overloads Function GetCountValues(ByVal CampaignIDValue As Object,
ByVal LCDATEValue As Date,
ByVal SearchTerm As String) As Integer
全班。复制并粘贴到 vb.net 类中,我认为它会给你同样的错误:
Public Class clsExample
''' <summary>
''' CampaignID and Agent Driven Count Values
''' </summary>
Public Overloads Function GetCountValues(ByVal CampaignIDValue As String,
ByVal AgentValue As String,
ByVal SearchTerm As String) As Integer
Dim x = From p In myTable.AsEnumerable
Where LTrim(RTrim(p.CAMPAIGNID)).ToLower =
LTrim(RTrim(CampaignIDValue)).ToLower _
And LTrim(RTrim(p.AGENT)).ToLower = LTrim(RTrim(AgentValue)).ToLower _
And p.TERMCD.Contains(SearchTerm) 'Order By p.AGENT
Group p By p.CAMPAIGNID, p.AGENT Into Group
Select New With {.CAMPAIGNID = CAMPAIGNID, .Agent = AGENT, .FunctionValue = Group.Count()}
If x.Any = True Then
Return x.ElementAt(0).FunctionValue
Else
Return 0
' Dim NewEntry = New With {.CAMPAIGNID = CampaignIDValue, .Agent = AgentValue, .FunctionValue = 0}
'x = NewEntry
' Dim Copy = x.Append(NewEntry)
'Return Copy
End If
End Function
''' <summary>
''' CampaignID Driven Count Values
''' </summary>
Public Overloads Function GetCountValues(ByVal CampaignIDValue As String, ByVal SearchTerm As String) As Integer
Dim x = From p In myTable.AsEnumerable
Where LTrim(RTrim(p.CAMPAIGNID)).ToLower =
LTrim(RTrim(CampaignIDValue)).ToLower _
And p.TERMCD.Contains(SearchTerm) 'Order By p.AGENT
Group p By p.CAMPAIGNID Into Group
Select New With {.CAMPAIGNID = CAMPAIGNID, .FunctionValue = Group.Count()}
If x.Any = True Then
Return x.ElementAt(0).FunctionValue
Else
Return 0
' Dim NewEntry = New With {.CAMPAIGNID = CampaignIDValue, .Agent = AgentValue, .FunctionValue = 0}
'x = NewEntry
' Dim Copy = x.Append(NewEntry)
'Return Copy
End If
End Function
'Public Overloads Function GetCountValues(ByVal CampaignIDValue As String,
' ByVal SearchTerm As String) As Integer
' Dim x = From p In myTable.AsEnumerable
' Where LTrim(RTrim(p.CAMPAIGNID)).ToLower =
' LTrim(RTrim(CampaignIDValue)).ToLower _
' And p.TERMCD.Contains(SearchTerm)
' Group p By p.CAMPAIGNID Into Group
' Select New With {.CAMPAIGNID = CAMPAIGNID, .FunctionValue = Group.Count()}
' If x.Any = True Then
' Return x.ElementAt(0).FunctionValue
' Else
' Return 0
' ' Dim NewEntry = New With {.CAMPAIGNID = CampaignIDValue, .Agent = AgentValue, .FunctionValue = 0}
' 'x = NewEntry
' ' Dim Copy = x.Append(NewEntry)
' 'Return Copy
' End If
'End Function
''' <summary>
''' Agent Driven Count Values
''' </summary>
Public Overloads Function GetCountValues(ByVal AgentValue As String,
ByVal SearchTerm As String) As Integer
Dim x = From p In myTable.AsEnumerable
Where LTrim(RTrim(p.AGENT)).ToLower =
LTrim(RTrim(AgentValue)).ToLower _
And p.TERMCD.Contains(SearchTerm)
Group p By p.AGENT Into Group
Select New With {.Agent = AgentValue, .FunctionValue = Group.Count()}
If x.Any = True Then
Return x.ElementAt(0).FunctionValue
Else
Return 0
' Dim NewEntry = New With {.CAMPAIGNID = CampaignIDValue, .Agent = AgentValue, .FunctionValue = 0}
'x = NewEntry
' Dim Copy = x.Append(NewEntry)
'Return Copy
End If
End Function
''' <summary>
''' LCDate, CampaignID and Agent Driven Count Values
''' </summary>
Public Overloads Function GetCountValues(ByVal CampaignIDValue As String,
ByVal AgentValue As String,
ByVal LCDATEValue As Date,
ByVal SearchTerm As String) As Integer
Dim x = From p In myTable.AsEnumerable
Where LTrim(RTrim(p.CAMPAIGNID)).ToLower =
LTrim(RTrim(CampaignIDValue)).ToLower _
And LTrim(RTrim(p.AGENT)).ToLower = LTrim(RTrim(AgentValue)).ToLower _
And p.TERMCD.Contains(SearchTerm) 'Order By p.AGENT
Group p By p.LCDATE, p.CAMPAIGNID, p.AGENT Into Group
Select New With {.LCDATE = LCDATEValue, .CAMPAIGNID = CAMPAIGNID, .Agent = AGENT, .FunctionValue = Group.Count()}
If x.Any = True Then
Return x.ElementAt(0).FunctionValue
Else
Return 0
' Dim NewEntry = New With {.CAMPAIGNID = CampaignIDValue, .Agent = AgentValue, .FunctionValue = 0}
'x = NewEntry
' Dim Copy = x.Append(NewEntry)
'Return Copy
End If
End Function
''' <summary>
''' LCDate and CampaignID Driven Count Values
''' </summary>
Public Overloads Function GetCountValues(ByVal CampaignIDValue As Object,
ByVal LCDATEValue As Date,
ByVal SearchTerm As String) As Integer
Dim x = From p In myTable.AsEnumerable
Where LTrim(RTrim(p.CAMPAIGNID)).ToLower =
LTrim(RTrim(CampaignIDValue)).ToLower _
And p.TERMCD.Contains(SearchTerm) 'Order By p.AGENT
Group p By p.LCDATE, p.CAMPAIGNID Into Group
Select New With {.LCDATE = LCDATEValue, .CAMPAIGNID = CAMPAIGNID, .FunctionValue = Group.Count()}
If x.Any = True Then
Return x.ElementAt(0).FunctionValue
Else
Return 0
' Dim NewEntry = New With {.CAMPAIGNID = CampaignIDValue, .Agent = AgentValue, .FunctionValue = 0}
'x = NewEntry
' Dim Copy = x.Append(NewEntry)
'Return Copy
End If
End Function
''' <summary>
''' LCDate and Agent Driven Count Values
''' </summary>
Public Overloads Function GetCountValues(ByVal AgentValue As String,
ByVal LCDATEValue As Date,
ByVal SearchTerm As String) As Integer
Dim x = From p In myTable.AsEnumerable
Where LTrim(RTrim(p.AGENT)).ToLower =
LTrim(RTrim(AgentValue)).ToLower _
And p.TERMCD.Contains(SearchTerm) 'Order By p.AGENT
Group p By p.LCDATE, p.AGENT Into Group
Select New With {.LCDATE = LCDATEValue, .Agent = AgentValue, .FunctionValue = Group.Count()}
If x.Any = True Then
Return x.ElementAt(0).FunctionValue
Else
Return 0
' Dim NewEntry = New With {.CAMPAIGNID = CampaignIDValue, .Agent = AgentValue, .FunctionValue = 0}
'x = NewEntry
' Dim Copy = x.Append(NewEntry)
'Return Copy
End If
End Function
''' <summary>
''' LCDate Driven Count Values
''' </summary>
Public Overloads Function GetCountValues(ByVal LCDATEValue As Date,
ByVal SearchTerm As String) As Integer
Dim x = From p In myTable.AsEnumerable
Where p.LCDATE =
LCDATEValue _
And p.TERMCD.Contains(SearchTerm) 'Order By p.AGENT
Group p By p.LCDATE Into Group
Select New With {.LCDATE = LCDATEValue, .FunctionValue = Group.Count()}
If x.Any = True Then
Return x.ElementAt(0).FunctionValue
Else
Return 0
' Dim NewEntry = New With {.CAMPAIGNID = CampaignIDValue, .Agent = AgentValue, .FunctionValue = 0}
'x = NewEntry
' Dim Copy = x.Append(NewEntry)
'Return Copy
End If
End Function
End Class
解决方案
参数变量的名称与签名无关!
我们需要能够调用这样的函数:
result = GetCountValues("string1", "string2")
如果您有两个与此匹配且仅在参数名称上有所不同的函数重载,则无法知道您的意思是哪一个。因此,对于问题中的类,这两种方法相互冲突:
Public Overloads Function GetCountValues(ByVal CampaignIDValue As String,
ByVal SearchTerm As String) As Integer
Public Overloads Function GetCountValues(ByVal AgentValue As String,
ByVal SearchTerm As String) As Integer
可能还有其他人。我不再看那个点了。
推荐阅读
- c# - 拥有 IMethodSymbol 是否可以在 Roslyn 中找出该方法中使用/调用的所有方法和字段?
- ios - 以 CGRect 绘制的圆形图像具有白色背景
- django - 带有 jinja2 FormHelper 支持的 django-crispy-forms
- pandas - 使用 pandas 追加一个 .xslx 文件是不是覆盖了它?
- java - Java 检查函数是否已被调用
- github - 发布时的 Github Action 触发器在标签上不起作用
- typescript - 构造一个新的可配置类
- c++ - 无法在地图中打印地图中的矢量值
- python - 在 dag 中增加或减少 ts_nodash 秒数
- javascript - JavaScript 中的 find() 与 map()