C\#중 정적 방법 과 비 정적 방법의 차 이 를 분석 합 니 다.
1.정적 방법 은 클래스 의 예화 없 이 호출 할 수 있 고 반대로 비 정적 방법 은 예화 되 어야 호출 할 수 있다.
2.정적 방법 은 정적 구성원 과 방법 에 만 접근 할 수 있 고 비 정적 방법 은 모두 접근 할 수 있다.
3.정적 방법 은 override 로 표시 할 수 없 기 때문에 파생 류 는 다시 쓸 수 없 지만 방문 할 수 있 습 니 다.
4.정적 멤버 는 처음 사용 할 때 초기 화 합 니 다.비 정적 인 구성원 은 대상 을 만 들 때 메모리 배분 에 있어 정적 은 연속 적 이 고 비 정적 인 것 은 메모리 의 저장 에 있어 분 산 된 것 이기 때문에 정적 방법 과 비 정적 인 방법 은 호출 속도 에 있어 정적 방법 속 도 는 반드시 빨 라 질 것 이다.비 정적 인 방법 은 예화 되 고 메모 리 를 분배 해 야 하지만 정적 인 방법 은 사용 하지 않 는 다.그러나 이런 속도 상의 차 이 는 무시 할 수 있다.
정적 방법 을 사용 할 때,인 스 턴 스 방법 을 사용 할 때:
1.하나의 방법 은 그 가 있 는 인 스 턴 스 대상 과 상 관 없 이 new 에서 나 온 인 스 턴 스 에 의존 하지 않 으 면 정적 이 어야 합 니 다.
2.대상 을 향 한 이념 이 필요 없 을 때 정적 을 사용한다.예 를 들 어 동물->RUN,고양이 run,개 run 을 확장 할 수 있 기 때문에 이 럴 때 비정 상 방법 을 사용 해 야 합 니 다.
스 레 드 보안:
정적 방법 은 하나의 인 스 턴 스 만 있 습 니 다.정적 변수 가 있 을 때 높 은 병발 할 때 병발 하 는 모든 실행 이 그 방법 으로 가면 정적 변수의 값 이 바 뀌 어 문제 가 발생 합 니 다.
물론 병발 이 안전 하지 않 은 것 은 방법 자체 와 관계 가 없다.공 유 된 그 자원 과 관계 가 있다.예 를 들 어 특정한 변수,모든 스 레 드 가 이 를 조작 하면 그 값 을 바 꿀 수 있다.다 중 스 레 드(병발 이 사실은 다 중 스 레 드)는 이 를 조작 하면 그 값 이 혼 란 스 러 워 서 문제 가 생 긴 다.
왜 비 정적 인 방법 을 써 야 합 니까?
이것 은 본인 이 쓴 방법 입 니 다.처음에 static 방법 으로 직접 썼 습 니 다.다른 사람 이 없 는 이 유 는 코드 를 한 줄 적 게 예화 하고 싶 지 않 기 때 문 입 니 다.정태 와 비정 상의 차 이 를 생각 하지 않 았 기 때 문 입 니 다.물론 비 static 로 쓰 는 방법 도 가능 합 니 다.
원인.
1.방법 은 중복 호출 이 필요 하기 때문에 매번 new 에 가면 메모리 비용 이 들 고 정적 인 방법 을 사용 하면 메모리 에 있 습 니 다.new 공간 에서 데 이 터 를 초기 화 할 필요 가 없습니다.
2.OO 를 할 필요 가 없다.
3.방법 은 new 에서 나 온 내용 에 의존 하지 않 는 다.
전형 적 인 static 방법 을 비교 하면 DBHelp 에는 기본적으로 static 방법 이 들 어 있 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Docker를 사용한 React 및 .NET Core 6.0 샘플 프로젝트 - 1부이 기사에서는 Entity Framework Core Code First 접근 방식을 사용하는 ASP.NET Core 6.0 WEP API의 CRUD(만들기, 읽기, 업데이트 및 삭제) 작업에 대해 설명합니다. 웹 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.