Требуется ли когда-либо ключевое слово «Перегрузки» в VB.Net? - PullRequest
1 голос
/ 28 октября 2010

Как следует из названия. Из того, что я вижу в сети, ключевое слово Overloads является необязательным, но есть ли когда-нибудь время, когда это необходимо? Это даже кажется ошибкой при использовании в модуле.

Ответы [ 5 ]

5 голосов
/ 28 октября 2010

Нет, это не обязательно. Вы можете перегружать методы и свойства без ключевого слова Overloads.

Однако, если вы используете ключевое слово Overloads или Overrides для одной перегрузки метода, вы должны использовать его для всех других перегрузок этого метода в классе.

Вы можете использовать ключевое слово Overloads вместо ключевого слова Shadows, чтобы скрыть унаследованный метод с той же сигнатурой. Затем вы должны использовать любое из ключевых слов, оба они не являются обязательными.

2 голосов
/ 28 октября 2010

В одном случае ключевое слово Overloads является обязательным.Если у метода есть ключевое слово Overloads, то любой новый метод с тем же именем в типе также должен иметь Overloads

. В противном случае ключевое слово является необязательным.

1 голос
/ 28 октября 2010

вам не нужно использовать ключевое слово Overloads, чтобы указать перегруженный метод, находясь в том же классе. Вот как C # справляется с перегрузкой - в C # нет ключевого слова Overloads.
Но использование ключевого слова Overloads, как правило, более читабельно.
Проверьте этот блог для более подробной информации.

0 голосов
/ 03 декабря 2017

Странно, бывают случаи, когда вы не можете использовать ключевое слово Overloads. Например:

Module MyModule
    Overloads Sub MySub(Param1 As String)
    End Sub
    Overloads Sub MySub(Param1 As String, Param2 As Integer)
    End Sub
End Module

Компилятор выдает ошибку «Неправильное использование ключевого слова« Перегрузка »в модуле».

Не знаю почему, поскольку вы все равно можете перегрузить метод как обычно.

0 голосов
/ 13 января 2016

В целях точности я делаю этот очень поздний ответ, так как заметил, что существующие ответы просто неверны.«Перегрузки», безусловно, требуются в некоторых случаях, чаще всего, когда другой метод с тем же именем переопределяет метод базового класса, как в следующем примере - код просто не скомпилируется, если удалить ключевое слово «Перегрузки»:

Public Class One
    Public Overridable Sub method()
    End Sub
End Class
Public Class Two
    Inherits One

    Public Overrides Sub method()
    End Sub

    Public Overloads Sub method(ByVal i As Integer)
    End Sub
End Class
...