2010-06-03 4 views
8

가능한 중복 : 왜 C#은 변수와 메서드에 대해 'const'로 설계되지 않았습니까?


“const correctness” in C#

내가 const 의심은 일반적인 언어 단순성에 대한 C#을 사양 단순화되었다. 변수 참조 나 메서드를 const과 같이 C++과 같이 선언 할 수없는 특별한 이유가 있었습니까? 예 :

+1

"C++ 스타일'const'ness가 (설계 및 구현 POV 모두에서) 올바르게 수행하기가 어렵고 런타임 지원이없는 경우가 많기 때문에 의미가 있습니까? 유용하지만 비용이 많이 드는 기능입니다. FWIW, F #은 반대되는 접근법을 취합니다 : * 아무것도 선언하지 않는 한 아무 것도 변경할 수 없습니다. 프레임 워크와의 상호 작용은 분명하지 않을 수 있습니다. –

+0

본인의 정확한 복제본에 동의하지 않습니다. 오래된 질문은 이것을 코드에서 구현하는 방법을 묻습니다. @spoulson은 컴파일러에없는 이유를 묻습니다. –

+1

정확성은 의미가 있기 위해 시행되어야합니다. .NET 사용 가능 언어가 다른 언어로 작성된 유형을 사용할 수 있으면 어려워집니다. 아마 100 개에 가까운 것이있을 것입니다. 이 모든 언어의 구문은 const 속성 선언에 맞게 수정되어야하며 컴파일러는이를 검증하기 위해 조정해야합니다. 즉, const 정확성은 크게 CLS를 준수하지 않습니다. –

답변

0

질문의 첫 번째 문장에 답하는 것으로 의심됩니다.

1

CONST는 어떤 의미를 실행하지 않고, 따라서 사용되는 곳의 값의 컴파일시 교체를 행한다. 일반적으로 const 객체에 대해 제안하는 것은 컴파일러가 (객체가 객체를 수정할지 여부를 결정하는 것은) 매우 어렵습니다. const 키워드를 접근 수정 자 (access modifier)로 사용하려는 제안은 작가에게 부담이되며 여전히 무언가를 확인하는 문제가 남아 있거나 객체를 수정하지 않습니다. 또한 모든 맥락에서 의미가없는 물건을 강요하고 있습니다. 메서드가 const이지만 const 개체로 사용하지 않는다면 무엇을 의미합니까? 원하는 기능은 일반적으로 인터페이스를 구현하고 클래스의 "읽기 전용"부분 만 노출하여 수행됩니다.

관련 문제