클래스 또는 구조체의 인스턴스 변수는 해당 클래스 또는 구조체에 정의된 변수, 속성, 프로시저 또는 이벤트에 액세스 Shared 하는 데 사용됩니다. 이 경고는 인스턴스 변수를 사용하여 상수 또는 열거형 또는 중첩 클래스 또는 구조체와 같은 클래스 또는 구조체의 암시적으로 공유된 멤버에 액세스하는 경우에도 발생할 수 있습니다.
멤버를 공유하는 목적은 해당 멤버의 복사본을 하나만 만들고 단일 복사본을 선언된 클래스 또는 구조체의 모든 인스턴스에서 사용할 수 있도록 하는 것입니다. 해당 클래스 또는 구조체의 개별 인스턴스를 보유하는 변수를 통해서가 아니라 클래스 또는 구조체의 이름을 통해 멤버에 액세스 Shared 하는 것이 이 목적과 일치합니다.
인스턴스 변수를 Shared 통해 멤버에 액세스하면 멤버가 있다는 사실을 가리면 코드를 이해하기가 더 어려워질 수 있습니다 Shared. 또한 이러한 액세스가 공유 멤버의 인스턴스를 반환하는 프로시저와 같은 Function 다른 작업을 수행하는 식의 일부인 경우 Visual Basic은 식 및 다른 작업을 무시합니다.
자세한 내용 및 예제는 공유를 참조 하세요.
기본적으로 이 메시지는 경고입니다. 경고를 숨기거나 경고를 오류로 처리하는 방법에 대한 자세한 내용은 Visual Basic에서 경고 구성을 참조하세요.
오류 ID: BC42025
예시
다음 예제에서는 bc42025를 생성합니다.
Public Class TestClass
Public Shared Sub SayHello()
Console.WriteLine("Hello")
End Sub
End Class
Module Program
Public Sub Main()
Dim tc As New TestClass()
tc.SayHello() ' BC42025.
End Sub
End Module
이 경고를 해결하려면
다음 예제와 같이 액세스하는 멤버를 정의하는 Shared 클래스 또는 구조체의 이름을 사용합니다.
Public Class TestClass
Public Shared Sub SayHello()
Console.WriteLine("Hello")
End Sub
End Class
Module Program
Public Sub Main()
TestClass.SayHello()
End Sub
End Module
비고
두 프로그래밍 요소의 이름이 같은 경우 범위의 효과에 대해 경고합니다. 이전 예제에서 인스턴스를 사용하여 Dim testClass As TestClass = Nothing선언하는 경우 컴파일러는 클래스 이름을 통해 메서드에 대한 액세스 권한으로 호출 testClass.SayHello() 을 처리하고 경고가 발생하지 않습니다.
참고하십시오
.NET