Поделиться через


Доступ к общему члену через экземпляр; выражение уточнения не вычисляется

Обновлен: Ноябрь 2007

Access of shared member through an instance; qualifying expression will not be evaluated

Экземпляр переменной класса или структуры используется для доступа к Shared переменной, свойству, процедуре или событию, определенному в классе или структуре. Это предупреждение также может возникнуть, если переменная экземпляра используется для доступа к неявному общему члену класса или структуры, таким как, константа или перечисление, или вложенному классу или структуре.

Целью совместного использования члена, является создание только одной копии этого члена и обеспечения доступности этой копии для каждого экземпляра класса или структуры, в которых член был объявлен. Для этой цели определено, что доступ к Shared члену осуществляется с помощью имени его класса или структуры, а не через переменную, содержащую отдельный экземпляр этого класса или структуры.

Доступ к Shared члену через переменную экземпляра может затруднить понимание кода, поскольку этот член является Shared. Кроме того, если такой доступ является частью выражения, которое производит другие действия, такие как, вызов Function, которая возвращает экземпляр общего члена, то Visual Basic пропустит выражения и любые другие действия, которые в противном случае он бы обнаружил.

Дополнительные сведения и примеры см. в разделе Shared (Visual Basic).

По умолчанию это сообщение является предупреждающим. Дополнительные сведения о скрытии предупреждений или их обработке как ошибок см. в разделе Настройка предупреждений в Visual Basic.

Идентификатор ошибки: BC42025

Исправление этой ошибки

  • Для доступа к элементу Shared используйте имя класса или структуры, которые определяют его.

  • Будьте внимательны к последствиям использования двух программных элементов с одинаковыми именами в области видимости. В следующем примере объявляется переменная testClass с тем же именем, что и класс, который является ее типом. Компилятор интерпретирует вызов sayHello() как доступ через имя класса testClass, что не приводит к возникновению предупреждения.

    Public Class testClass
        Public Shared Sub sayHello()
            MsgBox("Hello")
        End Sub
    End Class
    Module testModule
        Public Sub Main()
            Dim testClass As testClass = Nothing
            testClass.sayHello()
        End Sub
    End Module
    

См. также

Основные понятия

Область видимости в Visual Basic

Ссылки

Shared (Visual Basic)