Nice programing

클래스 대 공개 클래스

nicepro 2020. 12. 30. 20:24
반응형

클래스 대 공개 클래스


차이점은 무엇입니까?

namespace Library{
    class File{
        //code inside it
   }
}

과:

namespace Library{
   public class File{
       //code inside it
   }
}

그렇다면 공개 클래스클래스 의 차이점은 무엇 입니까?


public클래스를 지정하지 않으면 암시 적으로 internal. 즉, 클래스는 동일한 어셈블리 내에서만 볼 수 있습니다. 를 지정 public하면 클래스가 어셈블리 외부에 표시됩니다.

internal수정자를 명시 적으로 지정할 수도 있습니다 .

internal class Foo {}

전자는 다음과 같습니다.

namespace Library{
    internal class File{
        //code inside it
   }
}

모든 가시성은 기본적으로 가능한 가장 적게 표시됩니다.- es 및 s의 private멤버 (메소드, 속성, 필드, 중첩 된 클래스 및 중첩 된 s) 및 s의 직접 멤버의 경우 비공개가 될 수 없기 때문입니다.classstructenuminternalnamespace

internal 동일한 어셈블리의 다른 코드는 볼 수 있지만 다른 코드는 볼 수 없습니다 (친구 어셈블리 및 리플렉션 사용 금지).

이것은 두 가지 이유로 의미가 있습니다.

  1. 어쨌든 캡슐화를 강화하기 위해 의식적으로 가능한 최소한의 가시성을 사용하도록 만들어야합니다.
  2. 그들이 public당신 을 기본으로 설정했다면, 실수로 비공개이거나 내부적 인 것을 공개 할 수 있습니다. 실수로 충분히 보이지 않는 것을 만들면 명백한 컴파일 오류가 발생하여 수정됩니다. 실수로 무언가를 너무 눈에 띄게 만들면 오류로 플래그가 지정되지 않고 나중에 수정해야 할 주요 변경 사항이되는 코드에 결함이 생깁니다.

액세스 수정자를 사용하여 명시하고 코드에서 더 명확하게 진행하는 것이 더 나은 스타일로 간주되는 경우가 많습니다.


기본적으로 모든 classes (및 해당 문제에 대한 모든 유형)는 internal이므로 외부에서 액세스 할 InternalsVisibleToAttribute수 있으려면 public명시 적으로 만들어야합니다 .

참조 URL : https://stackoverflow.com/questions/12392876/class-vs-public-class

반응형