>  기사  >  백엔드 개발  >  C#의 정적 메서드와 비정적 메서드의 차이점 소개

C#의 정적 메서드와 비정적 메서드의 차이점 소개

黄舟
黄舟원래의
2017-09-06 13:49:231440검색

정적 메서드와 비정적 메서드의 차이점:

 1. 정적 메서드는 클래스 인스턴스화 없이 호출할 수 있는 반면, 비정적 메서드는 호출하기 전에 인스턴스화해야 합니다.

 2. 정적 메서드는 정적에만 액세스할 수 있습니다. 모든 비정적 메서드에 액세스할 수 있습니다.

 3. 정적 메서드는 재정의로 표시할 수 없으므로 파생 클래스를 다시 작성할 수는 없지만 액세스할 수는 있습니다. 처음으로. 비정적 멤버는 객체를 생성할 때 메모리 할당 측면에서 연속적인 반면, 비정적 멤버는 메모리 저장 측면에서 개별적입니다. 따라서 정적 메서드와 비정적 메서드 간의 호출 속도 측면에서 보면 정적 메서드의 속도는 확실히 빠릅니다. 서두르세요. 비정적 메서드는 인스턴스화하고 메모리를 할당해야 하지만 정적 메서드는 그렇지 않지만 속도 차이는 무시할 수 있기 때문입니다

정적 메서드를 사용해야 하는 경우와 인스턴스 메서드를 사용해야 하는 경우:

 1 . 한 가지 방법 해당 클래스의 인스턴스 객체와 관련이 없으며 new 인스턴스에 의존하지 않으므로 static이어야 합니다

  2. 동물과 같이 객체 지향 개념이 필요하지 않은 경우 static을 사용하십시오. ->RUN, 확장할 수 있으므로 cat run 및 dog run의 경우 이때 비정적 메서드를 사용해야 합니다

스레드 안전성 정보:

 정적 메서드에는 정적 변수가 있는 경우 인스턴스가 하나만 있습니다. 높은 동시성, 모든 동시 실행은 해당 메서드를 사용하면 정적 변수의 값이 변경되어 문제가 발생합니다.

물론 동시성 불안정성은 메서드 자체와 관련이 없으며 공유 리소스와 관련이 있습니다. 각 스레드가 작동하는 특정 변수의 값을 변경할 수 있습니다. 멀티스레딩(동시성은 실제로 멀티스레딩입니다), 작동하면 값이 혼동됩니다. 문제가 있습니다

비정적 방법을 사용하는 이유

본인이 직접 작성한 메소드입니다. 다른 정적 메소드가 없는 이유는 인스턴스화를 원하지 않기 때문에 코드 한 줄을 절약할 수 있고 차이점을 생각해 본 적이 없기 때문입니다. 정적과 비정적 사이==! ~~; 물론, 비정적 메소드를 작성하는 것도 가능합니다.

이유

1. 메소드를 반복적으로 호출해야 하기 때문에 매번 new로 가면 메모리 오버헤드가 발생합니다. 항상 메모리에 있습니다.

  2. OO를 수행할 필요가 없습니다.

3. 방법은 new의 내용에 의존하지 않습니다. 정적 메서드, DBHelp는 기본적으로 정적 메서드입니다

위 내용은 C#의 정적 메서드와 비정적 메서드의 차이점 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.