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: 호출되지 않는 전용 코드를 사용하지 마십시오.