정적 메소드 : 더 깊은 모양
정적 메소드는 필요하지 않은 인스턴스 메소드와 다릅니다. 액세스 할 객체 인스턴스화. 객체 참조가 아닌 클래스 이름을 통해 호출됩니다. 정적 메소드에 대해 생성 된 중간 언어 (IL) 코드는 호출 클래스에 관계없이 메소드를 정의하는 클래스의 이름을 직접 이름을 지정합니다. 이것을 설명하고 다음 코드를 고려하십시오.
public class a { 공개 정적 무효 테스트 () { } } 공개 클래스 B : a { } 수업 프로그램 { 정적 무효 메인 (String [] args) { b.test (); } }
B 클래스를 통한 메소드를 호출하지만 실제 IL 코드는 다음과 비슷합니다. .maxstack 8 L0000 : NOP l0001 : 호출 void consoleApplication1.a :: test () L0006 : NOP l0007 : ret
소스 코드가 B.test를 사용하더라도 호출이 a.test로 이루어집니다. 이것은 통화 클래스가 아닌 메소드를 정의하는 클래스를 기반으로 정적 메소드 호출이 컴파일 시간에 해결되었음을 보여줍니다. 방법은 파생 클래스에서 동일한 방법의 다른 구현을 허용하여 다형성 거동을 가능하게합니다. 그러나 정적 호출은 클래스 이름을 기반으로 특정 메소드를 직접 타겟팅하므로 .NET에서는 비 사실입니다. 따라서 C#. 다형성이없고, 추상 정적 방법의 개념은 유용한 사용 사례가 없습니다. 따라서 언어에 의해 뒷받침되지 않습니다.부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3