Jon이 이미 다루었 으면 (물론) const의 정확성은 나타나는 것처럼 간단하지 않습니다. C++은 한 가지 방법입니다. D는 또 다른 (틀림없이 더 정확하고 유용한) 방법입니다. C#은 그걸로 부끄럽지 만, 당신이 발견 한 것처럼 대담한 것을하지는 않습니다.
그렇긴해도 나는 Jon의 "이론적 인 이유"중 많은 부분이 D 모델에서 해결되었다고 생각한다.
D (2.0)에서 const는 완전히 전이 적이라는 점을 제외하면 C++과 매우 유사합니다 (포인터에 적용된 const가 가리키는 객체, 객체의 모든 멤버, 객체의 포인터, 객체 그들은 등등을 지적했다.) 그러나 이것은 만이 const로 선언 된 변수에서 적용된다는 것을 명시하고있다. (그래서 당신이 이미 const가 아닌 객체를 가지고 있고 그것에 const 포인터를 가져 간다면, const가 아닌 변수는 여전히 상태를 변경).
D는 개체 자체에 적용되는 다른 키워드 - 불변성을 도입합니다. 즉, 초기화 된 상태는 아무 것도 변경할 수 없습니다.
이 배열의 장점은 const 메서드가 const 및 invariant 개체를 모두 받아 들일 수 있다는 것입니다. 불변 객체는 함수 세계의 빵과 버터이기 때문에 const 메서드는 변경 가능한 객체와 함께 사용될 수 있지만 기능적 의미에서는 "순수"로 표시 될 수 있습니다.
다시 돌아 오는 길 - 저는 우리가 이제 const (그리고 invariant)를 사용하는 최선의 방법을 이해하는 (사기꾼의 후반부) 경우라고 생각합니다. 닷넷은 처음에는 일이 더 어렴풋 할 때 정의되었으므로 지나치게 커지지 않았으며 이제는 갱신하기에는 너무 늦었습니다.
내가 :-)
감사합니다. 그것은 밝다. –