Function GetAuthor(entityId As Integer, authorId As Integer, Optional ByVal authorImageWidth As Integer = 250) As String
Function GetAuthor(entityId As Integer, authorId As Integer, feedId As Integer, Optional ByVal authorImageWidth As Integer = 250) As String
我不知道这有什么不对。我收到此错误消息。
'Function GetAuthor(entityId As Integer,authorId As Integer,[authorImageWidth As Integer = 250])As String'和'Function GetAuthor(entityId As Integer,authorId As Integer,feedId As Integer,[authorImageWidth As Integer = 250] )因为String'不能相互重载,因为它们只有可选参数不同。
答案 0 :(得分:3)
如果你调用GetAuthor(int,int,int),编译器将不知道你想要的两种方法中的哪一种,因为两种方法都适合(这就是这条消息告诉你的)
如果删除第二种方法的可选部分,它将自动编译
GetAuthor(int, int)
和GetAuthor(int, int, int)
只能解析为您的第一种方法,而GetAuthor(int, int, int, int)
只能解析为您的第二种方法,从而通过其参数使重载唯一
答案 1 :(得分:0)
您必须找到区分所有这些可能的呼叫的方法:
GetAuthor(entityId, authorId)
GetAuthor(entityId, authorId, authorImageWidth)
GetAuthor(entityId, authorId, feedId)
GetAuthor(entityId, authorId, feedId, authorImageWidth)
第2行和第3行具有相同的签名。另一种方法是更改其中一个函数的名称,或者在其他地方定义authorImageWidth
,或者将authorImageWidth
的类型更改为String
或{{1}以外的其他内容}。
答案 2 :(得分:0)
编译器对要解决的方法感到困惑。
如果你打电话
怎么办?GetAuthor(1, 1, 250)
编译器应如何决定调用哪一个?
“嗯......也许他们的意思是这个人,因为没有第三个参数。”
Function GetAuthor(entityId As Integer, authorId As Integer, Optional ByVal authorImageWidth As Integer = 250) As String
“但是等等!这家伙需要第3个参数,但第4个参数是可选的。”
Function GetAuthor(entityId As Integer, authorId As Integer, feedId As Integer, Optional ByVal authorImageWidth As Integer = 250) As String
“作为编译器,我很困惑,因此我会告诉你。”
两者都是有效的,因为正如编译器已经告诉你的那样, ......不能相互重载,因为它们只有可选参数不同。