0
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]) As String ' オプションのパラメーターのみが異なるため、相互にオーバーロードできません。

4

3 に答える 3

3

GetAuthor(int, int, int) を呼び出した場合、コンパイラは 2 つのメソッドのどちらが適切かを判断できません (これがこのメッセージが伝えていることです)。

2 番目のメソッドのオプション部分を削除すると、それ以降コンパイル GetAuthor(int, int)GetAuthor(int, int, int)れ、最初のメソッドと 2 番目のメソッドにのみ解決できるためGetAuthor(int, int, int, int)、そのパラメーターによってオーバーロードが一意になります。

于 2012-07-18T17:51:50.137 に答える
0

これらすべての可能な呼び出しを区別する方法を見つける必要があります。

GetAuthor(entityId, authorId)
GetAuthor(entityId, authorId, authorImageWidth)    
GetAuthor(entityId, authorId, feedId)              
GetAuthor(entityId, authorId, feedId, authorImageWidth)

2行目と3行目は同じ署名です。別の方法は、関数の1つの名前を変更するか、別の場所を定義するauthorImageWidthか、またはのタイプまたは以外のものauthorImageWidthを変更することです。StringInteger

于 2012-07-18T17:59:05.277 に答える
0

コンパイラは、どのメソッドを解決するかについて混乱しています。

電話した場合はどうなりますか

GetAuthor(1, 1, 250)

コンパイラはどちらを呼び出すかをどのように決定する必要がありますか?

「うーん...3番目のパラメータがないので、おそらく彼らはこの男を意味していました。」

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

「コンパイラーとして、私は混乱しているので、あなたに知らせます。」

コンパイラがすでに言っているように、オプションのパラメータだけが異なるため、お互いにオーバーロードできないため、両方とも有効です。

于 2012-07-18T17:59:39.810 に答える