> 백엔드 개발 > C++ > C#에서 추상 클래스가 정적 메서드를 가질 수 있나요?

C#에서 추상 클래스가 정적 메서드를 가질 수 있나요?

Patricia Arquette
풀어 주다: 2025-01-03 14:11:40
원래의
617명이 탐색했습니다.

Can Abstract Classes Have Static Methods in C#?

C#의 가상 및 추상 정적 메서드

공급자와 작업할 때 추상 클래스가 추상 정적 메서드를 가질 수 있는지에 대한 질문이 발생합니다. 이 개념을 이해하려면 명확한 설명이 필요합니다.

정적 메서드가 인스턴스화되지 않는 이유

정적 메서드는 직접 인스턴스화되지 않습니다. 객체 참조 없이도 액세스할 수 있습니다. 객체 인스턴스가 아닌 클래스 이름을 통해 호출됩니다.

비가상 정적 호출 의미

중간 언어(IL) 코드에서는 정적 메서드 호출이 이루어집니다. 참조 객체의 클래스 이름이 아닌 메서드를 정의한 클래스 이름을 사용합니다. 예를 들면 다음과 같습니다.

public class A
{
    public static void Test()
    {
    }
}

public class B : A
{
}

class Program
{
    static void Main(string[] args)
    {
        B.Test();
    }
}
로그인 후 복사

Main 메서드의 IL 코드는 다음과 같습니다.

.entrypoint
.maxstack 8
L0000: nop 
L0001: call void ConsoleApplication1.A::Test()
L0006: nop 
L0007: ret 
로그인 후 복사

B.Test가 아닌 A.Test를 호출하는 경우에도 호출이 이루어집니다. 테스트는 C# 코드에서 호출됩니다.

정적의 가상성 제한 메소드

추상 메소드를 포함한 가상 메소드는 런타임 시 다양한 객체 유형을 참조할 수 있는 변수를 처리할 때 유용합니다. 정적 메서드의 경우 대상 메서드는 클래스 이름을 통해 액세스되므로 컴파일 타임에 알려집니다. 이렇게 하면 가상화가 필요하지 않습니다.

따라서 C#에서는 가상/추상 정적 메서드가 지원되지 않습니다. 이는 정적 메서드 호출이 비가상적이고 대상 메서드가 컴파일 타임에 결정되어 가상화가 불필요하기 때문입니다.

위 내용은 C#에서 추상 클래스가 정적 메서드를 가질 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿