C #의 내부 대 공용
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
다른 DLL에서 액세스 할 수 있으므로
일반적으로 멤버를 선언 할 때 DLL 외부가 아닌 DLL 내부에서 멤버 또는 형식을 선언 할 때 유용합니다 Public
. 그러나 클래스 라이브러리 내에서 무언가를 public으로 선언해야하는 경우 Internal
.
공식 방어 : 내부 구성원은 현재 어셈블리 내부에서 볼 수 있습니다 ...
internal
단위 테스트를 작성할 때도 유용합니다. 이 InternalsVisibleTo
특성을 사용하면 테스트 어셈블리가 코드 어셈블리의 내부 메서드에 액세스 할 수 있습니다. 즉 리플렉션을 사용하지 않고 외부 세계에 비공개로 보이는 방법을 테스트 할 수 있습니다.
어셈블리 외부에서도 Public에 액세스 할 수 있습니다. 따라서 액세스해서는 안되는 클래스가 어셈블리의 모든 클래스에서 액세스 할 수 있어야하는 경우 내부가 옳습니다. 외부 액세스가 필요한 경우 public을 사용하십시오.
또한로 표시된 속성 은 WPF의 DataBinding에 사용되는 경우 internal
를 throw합니다 BindingExpression path error
. 따라서 public
DataBinding이 동일한 어셈블리 내에서 발생하더라도 제대로 작동하려면 이러한 작업이 수행되어야합니다.
외부에서 어셈블을 참조 할 수 있으면 내부 및 공용 클래스의 범위가 있습니다.
참고 URL : https://stackoverflow.com/questions/4182015/internal-vs-public-in-c-sharp
'development' 카테고리의 다른 글
nullable 형식 "int"의 기본값은 무엇입니까? (0) | 2020.09.16 |
---|---|
C ++에서 상속 된 우정을 허용하지 않는 이유는 무엇입니까? (0) | 2020.09.16 |
Gradle로 JUnit 테스트를 실행하는 방법은 무엇입니까? (0) | 2020.09.16 |
go get을 사용하여 특정 버전의 패키지를 가져 오려면 어떻게해야합니까? (0) | 2020.09.16 |
개체가 특정 유형인지 확인하는 방법 (0) | 2020.09.16 |