클래스 수정자: public, Internal, Partial, Abstract, Sealed, Static
멤버 수정자: Public, protected, Private, Internal, Sealed, Abstract, Virtual, Override, readonly, const
공개: 가장 개방적이며 이 어셈블리 및 다른 어셈블리의 모든 개체에 액세스할 수 있습니다
보호됨: 더 개방적이며 자체 멤버 및 하위 클래스 멤버에 액세스할 수 있습니다
Private: 해당 멤버만 액세스 가능
Internal: 이 어셈블리의 멤버만 액세스 가능
Partial: 부분 클래스, 클래스를 여러 부분으로 나누어 작성 가능 최종 컴파일 과정에서 하나의 파일로 병합되며, 해당 부분은 다른 어셈블리에 흩어질 수 없습니다.
Abstract: 클래스를 수정하면 해당 클래스가 Abstract 클래스라는 의미입니다. 이 클래스의 인스턴스를 만들 수 없습니다. 메소드를 수정한다는 것은 메소드가 서브클래스에 의해 구현되어야 함을 의미합니다. 서브클래스가 메소드를 구현하지 않으면 서브클래스도 추상 클래스이고 추상 메소드를 포함하는 클래스는 추상 클래스여야 합니다.
Sealed: 클래스를 수정하면 클래스를 상속할 수 없다는 의미이고, 메서드를 수정하면 메서드를 재정의할 수 없다는 의미입니다.
정적: 클래스를 수정할 때 이는 클래스가 정적 클래스이고 이 클래스의 개체를 인스턴스화할 수 없음을 의미합니다. 이 클래스는 인스턴스화할 수 없으므로 이 클래스는 개체 멤버를 포함할 수 없습니다. 클래스의 모든 멤버는 정적입니다. 클래스 멤버를 수정할 때 해당 멤버는 [class.member name]
static이 생성자를 수정하는 경우 생성자는 매개변수나 수정자를 포함할 수 없으며 생성자는
개체 멤버를 초기화할 수 없습니다. 그러나 정적 멤버는 초기화되거나 호출될 수 있습니다. 언제 실행될지는 보장할 수 없으나
클래스가 처음 사용되기 전에 실행된다는 점은 보장할 수 있습니다. 정적 생성자에서 초기화된 정적 멤버는 최종 초기화 결과입니다. 예:
view plain
public static int test = 0
static Person()
{
test = 3 ;
}
static void Main(string[] args)
{
콘솔. WriteLine (Person.test);//실행 결과는 3
}
참고: 클래스나 메서드가 수정자에 의해 수정되지 않은 경우 기본값은 내부입니다:
C# 여러 수정자를 사용하여 클래스의 다양한 속성을 표현합니다. C# 클래스에는 보호 수준에 따라 다섯 가지 제한 수정자가 있습니다.
public은 임의로 액세스할 수 있습니다.
protected는 이 클래스와 상속된 하위 클래스에서만 액세스할 수 있습니다.
내부만 액세스할 수 있습니다. 이 어셈블리(Assembly)의 모든 클래스에서 액세스할 수 있습니다. 어셈블리는 C# 언어에서 클래스가 결합된 후의 논리적 단위이자 물리적 단위입니다.
컴파일된 파일 확장자는 ".DLL" 또는 ".EXE"인 경우가 많습니다. ".
protected 내부는 이 조합의 모든 클래스와 이러한 클래스의 상속된 하위 클래스에서만 액세스할 수 있는 유일한 조합 제한 수정자입니다.
비공개는 이 클래스에서만 접근할 수 있습니다.
중첩 클래스가 아닌 경우 네임스페이스 또는 컴파일 단위의 클래스에는 공개 및 내부라는 두 가지 수정 사항만 있습니다.
새 수정자는 중첩 클래스에만 사용할 수 있으며, 이는 상위 클래스에서 상속된 동일한 이름의 유형이 숨겨짐을 나타냅니다.
abstract는 추상 클래스를 수정하는 데 사용됩니다. 이는 클래스가 상위 클래스로서 상속에만 사용될 수 있고 객체로 인스턴스화될 수 없음을 나타냅니다. 추상 클래스에는 추상
멤버가 포함될 수 있지만 필수는 아닙니다. abstract는 new와 함께 사용할 수 없습니다.