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


BC30369. Не удается ссылаться на член экземпляра класса из общего метода или инициализатора общего члена без явного экземпляра класса.

Вы попытались ссылаться на не общий член класса из общей процедуры. В следующем примере показана такая ситуация:

Class Sample
    Public x as Integer
    Public Shared Sub SetX()
        x = 10
    End Sub
End Class

В предыдущем примере инструкция x = 10 назначения создает это сообщение об ошибке. Это связано с тем, что общая процедура пытается получить доступ к переменной экземпляра.

Переменная x является членом экземпляра, так как она не объявлена как shared. Каждый экземпляр класса Sample содержит собственную отдельную переменную x. Если один экземпляр задает или изменяет значение x, оно не влияет на значение x в любом другом экземпляре.

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

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

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

  1. Определите, должен ли член быть общим для всех экземпляров класса или храниться отдельно для каждого экземпляра.

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

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

См. также