C\#중 정적 방법 과 비 정적 방법의 차 이 를 분석 합 니 다.

1952 단어 c정적비정 상
정적 방법 과 비 정적 방법의 차이:
1.정적 방법 은 클래스 의 예화 없 이 호출 할 수 있 고 반대로 비 정적 방법 은 예화 되 어야 호출 할 수 있다.
2.정적 방법 은 정적 구성원 과 방법 에 만 접근 할 수 있 고 비 정적 방법 은 모두 접근 할 수 있다.
3.정적 방법 은 override 로 표시 할 수 없 기 때문에 파생 류 는 다시 쓸 수 없 지만 방문 할 수 있 습 니 다.
4.정적 멤버 는 처음 사용 할 때 초기 화 합 니 다.비 정적 인 구성원 은 대상 을 만 들 때 메모리 배분 에 있어 정적 은 연속 적 이 고 비 정적 인 것 은 메모리 의 저장 에 있어 분 산 된 것 이기 때문에 정적 방법 과 비 정적 인 방법 은 호출 속도 에 있어 정적 방법 속 도 는 반드시 빨 라 질 것 이다.비 정적 인 방법 은 예화 되 고 메모 리 를 분배 해 야 하지만 정적 인 방법 은 사용 하지 않 는 다.그러나 이런 속도 상의 차 이 는 무시 할 수 있다. 
정적 방법 을 사용 할 때,인 스 턴 스 방법 을 사용 할 때:
1.하나의 방법 은 그 가 있 는 인 스 턴 스 대상 과 상 관 없 이 new 에서 나 온 인 스 턴 스 에 의존 하지 않 으 면 정적 이 어야 합 니 다.
2.대상 을 향 한 이념 이 필요 없 을 때 정적 을 사용한다.예 를 들 어 동물->RUN,고양이 run,개 run 을 확장 할 수 있 기 때문에 이 럴 때 비정 상 방법 을 사용 해 야 합 니 다.
스 레 드 보안:
정적 방법 은 하나의 인 스 턴 스 만 있 습 니 다.정적 변수 가 있 을 때 높 은 병발 할 때 병발 하 는 모든 실행 이 그 방법 으로 가면 정적 변수의 값 이 바 뀌 어 문제 가 발생 합 니 다.
물론 병발 이 안전 하지 않 은 것 은 방법 자체 와 관계 가 없다.공 유 된 그 자원 과 관계 가 있다.예 를 들 어 특정한 변수,모든 스 레 드 가 이 를 조작 하면 그 값 을 바 꿀 수 있다.다 중 스 레 드(병발 이 사실은 다 중 스 레 드)는 이 를 조작 하면 그 값 이 혼 란 스 러 워 서 문제 가 생 긴 다. 
왜 비 정적 인 방법 을 써 야 합 니까?

이것 은 본인 이 쓴 방법 입 니 다.처음에 static 방법 으로 직접 썼 습 니 다.다른 사람 이 없 는 이 유 는 코드 를 한 줄 적 게 예화 하고 싶 지 않 기 때 문 입 니 다.정태 와 비정 상의 차 이 를 생각 하지 않 았 기 때 문 입 니 다.물론 비 static 로 쓰 는 방법 도 가능 합 니 다.
원인.
1.방법 은 중복 호출 이 필요 하기 때문에 매번 new 에 가면 메모리 비용 이 들 고 정적 인 방법 을 사용 하면 메모리 에 있 습 니 다.new 공간 에서 데 이 터 를 초기 화 할 필요 가 없습니다.
2.OO 를 할 필요 가 없다.
3.방법 은 new 에서 나 온 내용 에 의존 하지 않 는 다.
전형 적 인 static 방법 을 비교 하면 DBHelp 에는 기본적으로 static 방법 이 들 어 있 습 니 다.

좋은 웹페이지 즐겨찾기