C# 컴파일러는 모든 종류의 개인 자료를에 최적화 할 수 있습니다. 상수 뿐만이 아닙니다. 사용되지 않는 멤버, 클래스, 코드를 제거 할 수 있습니다. 그것은 개인적인 이름을 벗길 수 있습니다. 개인 속성을 삭제하고 메서드로 바꿀 수 있습니다.
반사 액세스 및 일리노이 다시 쓰기 도구은 사적인 물건의 중요한 사용 사례로 떠오릅니다. 또한 대부분의 메타 데이터가 여전히 존재할 때 디버깅이 쉬워집니다. 예를 들어, 편집 & 이전에 사용하지 않은 멤버를 계속 사용할 수 있습니다. 직접 실행 창을 사용하여 정적으로 사용되지 않는 멤버를 호출 할 수 있습니다.
PDB 심볼에도 의미가 있을지 모르지만 나는 지금 당장 생각할 수 없습니다.
.NET 어셈블리에는 반사 액세스에 유용한 인 많은 메타 데이터가 들어 있습니다. 속성은 검사 할 수있는 것 이외에는 런타임시 영향을 미치지 않습니다. 어셈블리는 풍부하고 자체 설명하기위한 것입니다.
항상 정적으로 사용하지 않기 때문에 상수는 유지하는 것이 특히 쓸모가 없다고 주장 할 수 있습니다. 그렇다고 반사 용도가 없다는 의미는 아닙니다. 또한 코드 디 컴파일과 도울 수 있습니다. 스마트 디 컴파일러는 특정 리터럴이 근처에 선언 된 상수와 동일하다는 것을 알 수 있습니다. 게다가, 왜 그것들을 멀리 떨어 뜨리기 위해서 상수에 대한 예외를 만들까요? 전형적인 프로그램에는 거의 상수가 없습니다. 그것들을 제거하는 것이 더 나을 것이라고 가정한다고하더라도 투자는 거의 성과가 없을 것입니다. 같은 시간에 유용한 언어 기능을 더 효과적으로 개발할 수 있습니다.
출처
2014-11-07 22:58:54
usr
BindingFlags.NonPublic 때문에. 사적인 부분을 찌를 수있는 것은 당신이 구속력이 있고 프로그래머가 전화를 받아서 도움을 줄 때 편리합니다. –
하지만 그 개인 상수에 대한 액세스는 어떤 용도로 사용됩니까? IL은 상수를 참조하지 않습니다. 누군가는 누군가가 어딘가에서 값을 하드 코딩하는 대신 상수를 사용하기로 결정했다는 것을 말해줍니다. – user2465452
물론 "IL은 그 상수를 참조합니다". 그것은 일리노이에 내장되어있다. 당신이 그것을 사용하지 않는다면 인생은 좋습니다. –