로서 전에, 자바 정적 최종가 C에서 # 정적 판독 전용와 동일했다. 사실,이 멤버는 정적이며 내용을 변경할 수 없다고 말하고 있습니다. 또한 두 경우 모두 정적 생성자의 값을 지정할 수 있습니다.
그러나 const은 C#과 완전히 다른 것입니다. 그것은 C (DEFINE 지시문)의 상수 선을 따르지만 OOP를 염두에두고 작성되었습니다. 상수이기 때문에 정적입니다. 모든 인스턴스는 같은 값을 가진이 상수를 가지며 생성자는 설정할 수 없습니다. 인스턴스를 만들지 않고도 상수에 액세스하고 싶을 수도 있습니다. 당신이 그것에 대해 생각할 때 비 정적 상수는 단지 이해가되지 않습니다. 거의 상수는 객체의 일부가 아니라는 것을 알 수 있습니다. 단지 상수를 강력한 이름으로 사용하기 위해서입니다.
Java에는 const에 해당하는 것이 없습니다. 정적 최종은 DEFINE과 동일하지만 그 정도가 모호합니다.완전히 다른 메커니즘이지만 코드의 최종 결과는 동일하지만 코드 유지 관리가 쉽고 가독성이 뛰어납니다.
C#에서 정적 멤버로 간주하지 않으므로 정적 멤버로 생각하면 안됩니다. OOP 버전 DEFINE으로 생각하십시오. 캡슐화를 고려할 때 최종 및 읽기 전용 필드는 실수로 값이 변경되는 것을 방지하기위한 것입니다. 그리고 그것은 저에게 끊임없이 들리지 않습니다.
Sumary =
- 최종 읽기 전용
- 정적 정적 = 최종 읽기 전용
- N/A = CONST 난 당신이 다시 Jave을 교환했다 생각
. 그렇다면 왜 걱정할 것입니까! ;) –
B/c 지금은 궁금합니다. =) 본질적으로 진실임을 명시 적으로 밝히지 만 컴파일 오류가 발생하는 이유를 이해하지 못합니다. – Cuga
아마도 Java가 상수를 직접 지원하지 않기 때문에 정적 상수를 사용하여 상수를 구현해야하는 이유가 여기 있습니다. 반면 C#의 const는 Greg에서 언급 한 것처럼 정적이며 컴파일 타임에 설정됩니다. 어떤 사람들은 런타임에 값을 설정할 수있는 정적 읽기 전용을 C#에서 혼동합니다. – jasonco