public와 internal가시성 수정 자의 차이점을 알고 싶습니다 .
internal수업에서 언제 사용해야 public합니까? 메서드가 public또는 이어야 할 때 혼란스러워합니다 internal.
나는 읽고 internal있는 동안, 총회를 통해 액세스 할 수 있습니다 public또한 조립 곳의 차이 거짓말을 통해 사용할 수 있습니다.
public와 internal가시성 수정 자의 차이점을 알고 싶습니다 .
internal수업에서 언제 사용해야 public합니까? 메서드가 public또는 이어야 할 때 혼란스러워합니다 internal.
나는 읽고 internal있는 동안, 총회를 통해 액세스 할 수 있습니다 public또한 조립 곳의 차이 거짓말을 통해 사용할 수 있습니다.
답변:
public 어디에서나 볼 수 있습니다.
internal 어셈블리 내에서만 볼 수 있습니다.
내부 API를 보호하기 위해 내부 전용을 사용하는 경향이 있습니다. 예를 들어 메서드의 여러 오버로드를 노출 할 수 있습니다.
public int Add(int x, int y)
public int Add(int x,int y, int z)
둘 다 내부 메서드를 호출합니다.
internal int Add(int[] numbers)
그런 다음 메서드에 많은 정교함을 넣을 수 있지만 프로그래머가 메서드를 올바르게 호출하는 데 도움이 될 수있는 파사드 메서드를 사용하여 "보호"할 수 있습니다. (예를 들어, 배열 매개 변수가있는 구현 방법은 임의의 값 제한을 가질 수 있습니다.)
또한 Reflection을 사용하면 가시성에 관계없이 모든 메서드를 호출 할 수 있습니다. 내부적으로 숨겨진 API를 제어 / 접근하기위한 또 다른 "해킹".
internal와 모든 메소드를 만든다고 상상해보십시오 public. 더 높은 가시성이 필요한 경우 전체 클래스를 public다시 설정할 수 있습니다 . 그러나 나는 그것이 이러한 방식으로 사용되도록 의도되었는지 여부는 확실하지 않습니다. 그래서 인터넷 검색을 계속합니다 ... Et
internal단위 테스트를 작성할 때도 유용합니다. 이 InternalsVisibleTo특성을 사용하면 테스트 어셈블리가 코드 어셈블리의 내부 메서드에 액세스 할 수 있습니다. 즉 리플렉션을 사용하지 않고 외부 세계에 비공개로 보이는 방법을 테스트 할 수 있습니다.