개인 또는 보호 된 클래스 멤버와 공용 클래스 멤버 간의 컴파일 된 코드의 차이점은 무엇입니까? 런타임에 멤버에 액세스 할 수 있는지 여부를 확인합니다. 나는 C#의 맥락에서 이러한 질문을하고있다.액세스 한정자 컴파일
1
A
답변
2
IL로 컴파일 한 후 정보가 보존됩니다. 컴파일 된 모듈 (DLL)은 다른 코드에서 참조 할 수 있으며 private/public/protected가 중요합니다.
IL에서 원시 컴퓨터 코드로 컴파일 한 후 차이점은 없습니다.
런타임 중에 구성원에 액세스 할 수 있는지 여부를 확인합니까?
저는 완전히 모르겠지만 이것은 유형 로더의 일부라고 생각합니다. (W/o Reflection)이 알려지지 않아야하는 개인 변수에 액세스하는 코드는 규칙을 어딘가에 깨뜨려야합니다.
+2
JIT가 메소드를 컴파일하기 시작할 때 액세스가 확인되면 메소드가 멤버로부터 숨겨진 액세스를 시도하면 예외가 발생합니다. –
+0
@OlehNechytailo 명확히 해 주셔서 감사합니다. – Cracker
readonly에 대한 비슷한 토론이 있습니다. http://stackoverflow.com/questions/913400/is-there-any-run-time-overhead-to-readonly – doctorlove
@doctorlove [ 이 질문에] (http://stackoverflow.com/questions/15564011/oop-access-modifiers-copmile-time-or-run-time) Java에서 런타임 검사가 있습니다. – Cracker