Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 方法仅因可选参数错误而不同_C#_Vb.net - Fatal编程技术网

C# 方法仅因可选参数错误而不同

C# 方法仅因可选参数错误而不同,c#,vb.net,C#,Vb.net,我不知道这有什么问题。我收到了这个错误消息 “函数GetAuthor(entityId为整数,authorId为整数,[authorImageWidth为整数=250])为字符串”和“函数GetAuthor(entityId为整数,authorId为整数,feedId为整数,[authorImageWidth为整数=250])为字符串”不能相互重载,因为它们仅在可选参数上有所不同 如果您调用GetAuthor(int,int,int),编译器将不知道您想要这两个方法中的哪一个,因为这两个方法都是

我不知道这有什么问题。我收到了这个错误消息

“函数GetAuthor(entityId为整数,authorId为整数,[authorImageWidth为整数=250])为字符串”和“函数GetAuthor(entityId为整数,authorId为整数,feedId为整数,[authorImageWidth为整数=250])为字符串”不能相互重载,因为它们仅在可选参数上有所不同

如果您调用GetAuthor(int,int,int),编译器将不知道您想要这两个方法中的哪一个,因为这两个方法都是合适的(这就是此消息告诉您的)

如果删除第二个方法的可选部分,它将自
GetAuthor(int,int)
GetAuthor(int,int,int)
只能解析为第一个方法,而
GetAuthor(int,int,int,int)
只能解析为第二个方法,因此,如果调用GetAuthor(int,int,int),重载的参数将是唯一的编译器将不知道您想要这两种方法中的哪一种,因为这两种方法都是合适的(这就是本文要告诉您的)

如果删除第二个方法的可选部分,它将自
GetAuthor(int,int)
GetAuthor(int,int,int)
只能解析为第一个方法,而
GetAuthor(int,int,int,int)
只能解析为第二个方法,因此通过参数使重载唯一

您必须找到一种方法来区分所有这些可能的调用:

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

第二行和第三行具有相同的签名。另一种方法是更改其中一个函数的名称,或在其他地方定义
authorImageWidth
,或将
authorImageWidth
的类型更改为
String
或除
Integer

以外的其他类型。您必须找到一种方法来区分所有这些可能的调用:

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

第二行和第三行具有相同的签名。另一种方法是更改其中一个函数的名称,或在其他地方定义
authorImageWidth
,或将
authorImageWidth
的类型更改为
String
或除
Integer

以外的其他类型。编译器不知道要解析哪个方法

如果你打电话呢

GetAuthor(entityId, authorId)
GetAuthor(entityId, authorId, authorImageWidth)    
GetAuthor(entityId, authorId, feedId)              
GetAuthor(entityId, authorId, feedId, authorImageWidth)
编译器应该如何决定调用哪一个

“嗯……也许他们指的是这个家伙,因为没有第三个参数。”

“但是等等!这家伙需要第三个参数,但第四个是可选的。”

“作为编译器,我很困惑,因此我要让您知道。”


两者都是有效的,因为正如编译器已经告诉您的,它。。。无法重载彼此,因为它们仅在可选参数上不同。

编译器不知道要解析哪个方法

如果你打电话呢

GetAuthor(entityId, authorId)
GetAuthor(entityId, authorId, authorImageWidth)    
GetAuthor(entityId, authorId, feedId)              
GetAuthor(entityId, authorId, feedId, authorImageWidth)
编译器应该如何决定调用哪一个

“嗯……也许他们指的是这个家伙,因为没有第三个参数。”

“但是等等!这家伙需要第三个参数,但第四个是可选的。”

“作为编译器,我很困惑,因此我要让您知道。”

两者都是有效的,因为正如编译器已经告诉您的,它。。。无法相互重载,因为它们仅在可选参数上有所不同。

Function GetAuthor(entityId As Integer, authorId As Integer, feedId As Integer, Optional ByVal authorImageWidth As Integer = 250) As String