다음을 통해 공유


CA1822: 멤버를 static으로 표시하십시오.

TypeName

MarkMembersAsStatic

CheckId

CA1822

범주

Microsoft.Performance

변경 수준

주요 변경 아님 - 사용자가 변경한 내용에 상관없이 멤버가 어셈블리 외부에 표시되지 않는 경우. 주요 변경 아님 - 멤버를 this 키워드가 있는 인스턴스 멤버로 변경하는 경우

주요 변경 - 멤버를 인스턴스 멤버에서 정적 멤버로 변경하고 이 멤버가 어셈블리 외부에 표시되는 경우

원인

인스턴스 데이터에 액세스하지 않는 멤버가 static(Visual Basic의 경우 Shared)으로 표시되어 있지 않습니다.

규칙 설명

인스턴스 데이터에 액세스하지 않거나 인스턴스 메서드를 호출하지 않는 멤버는 static(Visual Basic의 경우 Shared)으로 표시할 수 있습니다. 메서드를 static으로 표시하면 컴파일러는 이러한 멤버에 대한 비가상 호출 사이트를 내보냅니다. 비가상 호출 사이트를 내보내면 런타임에서 개별 호출에 대해 현재 개체 포인터가 null이 아닌지 확인하는 검사가 수행되지 않습니다. 이 경우 성능이 중요한 코드에서 성능이 크게 향상될 수 있습니다. 일부의 경우 현재 개체 인스턴스에 액세스하지 못하는 것은 정확성에 문제가 있기 때문일 수 있습니다.

위반 문제를 해결하는 방법

멤버를 static(Visual Basic의 경우 Shared)으로 표시하거나 적절한 경우 메서드 본문에 'this'/'Me'를 사용합니다.

경고를 표시하지 않는 경우

수정이 주요 변경 내용에 해당하는 이전에 제공된 코드의 경우에는 이 규칙에서 경고를 표시하지 않아도 안전합니다.

관련 규칙

CA1811: 호출되지 않는 전용 코드를 사용하지 마십시오.

CA1812: 인스턴스화되지 않은 내부 클래스를 사용하지 마십시오.

CA1804: 사용되지 않는 로컬 항목을 제거하십시오.