내부 대 개인 액세스 수정 자 C #에서 액세스 수정 자 internal와

C #에서 액세스 수정 자 internalprivate액세스 수정 자의 차이점은 무엇입니까 ?



답변

내부의 은 어셈블리 범위를위한 것입니다 (예 : 동일한 .exe 또는 .dll의 코드에서만 액세스 가능)

private 은 클래스 범위를위한 것입니다 (즉, 같은 클래스의 코드에서만 액세스 가능).


답변

아래에서 설명을 찾으십시오. 자세한 내용은이 링크를 확인하십시오-http:
//www.dotnetbull.com/2013/10/public-protected-private-internal-access-modifier-in-c.html

은밀한: -개인 회원은 자신의 유형 (자체 클래스) 내에서만 액세스 할 수 있습니다.

내부 : -내부 멤버는 상속 (파생 유형) 또는 클래스 인스턴스를 통해 어셈블리 내에서만 액세스 할 수 있습니다.

여기에 이미지 설명을 입력하십시오

참고 :

dotnetbull-C #의 액세스 수정 자란 무엇입니까


답변

internal멤버는 선언 된 어셈블리의 모든 코드에서 볼 수 있습니다
(및 [InternalsVisibleTo]속성을 사용하여 참조 된 다른 어셈블리 )

private멤버는 선언 클래스에만 표시됩니다. (중첩 클래스 포함)

외부 (중첩되지 않은) 클래스는 private전용으로 만들 범위가 없으므로 선언 할 수 없습니다 .

잊어 버린 질문에 대답하기 위해 protected 멤버는 private멤버와 비슷하지만 선언 유형을 상속하는 모든 클래스에서도 볼 수 있습니다. (그러나 적어도 현재 클래스 유형의 표현식에서만)


답변

개인 -클래스 / 범위 / 구조체의 캡슐화 ‘.

내부 -어셈블리의 캡슐화.


답변

비공개 멤버는 클래스 본문 또는 선언 된 구조체 내에서만 액세스 할 수 있습니다.

내부 유형 또는 멤버는 동일한 어셈블리의 파일 내에서만 액세스 할 수 있습니다


답변

Internal을 사용하면 여러 비즈니스 로직 클래스간에 데이터 액세스 정적 클래스 (스레드 안전성을 위해)를 참조하면서 연결 풀에서 서로 클래스 / 트립을 상속하도록 상속하지 않고 궁극적으로 DAL 클래스를 허용하지 않도록 할 수 있습니다. 공공 수준에서 액세스를 촉진합니다. 이것은 디자인과 모범 사례에서 수많은지지를 가지고 있습니다.

Entity Framework는 이러한 유형의 액세스를 잘 활용합니다.


답변

내부 멤버는 어셈블리 내에서 액세스 가능 (동일한 프로젝트에서만 액세스 가능)

개인 회원은 같은 클래스에서 액세스 할 수 있습니다

초보자를위한 예

솔루션에는 두 개의 프로젝트 (Project1, Project2)가 있으며 Project1에는 Project2에 대한 참조가 있습니다.

  • Project2로 작성된 공개 방법은 Project2 및 Project1에서 액세스 할 수 있습니다.
  • Project2로 작성된 내부 메소드는 Project1에서만 액세스 가능하지만 Project1에서는 액세스 할 수 없습니다.
  • Project2의 클래스 1로 작성된 개인 메소드는 동일한 클래스에만 액세스 할 수 있습니다. 프로젝트 1이 아닌 다른 클래스의 프로젝트 2에서는 액세스 할 수 없습니다.