2012-09-12 2 views
2

내 구성 요소 중 하나에서 특정 버전을 확인해야합니다. 이런 이유로 나는 테스트 할 수있는 public const int를 소개하기를 원했습니다.버전 번호로 const 사용하기

그러나이 게시물에서 When, if ever, should we use const?을 읽은 것이 미래에 뭔가 변경 될 때마다 const를 사용하는 것이 좋습니다.

어떻게해야할까요? 공개 읽기 전용 int를 사용합니까? 속성을 사용하고 있습니까? AssemblyVersion 또는 AssemblyFileVersion을 사용하지 못합니다 ...

감사합니다!

+0

'사람들은 내가 정확히 당신이 무엇을 미안 뜻 해요, 내 hand'에 있지? –

+0

AssemblyVersion 등을 사용할 수없는 이유를 설명 할 수 있습니까? 이는 어셈블리의 새 버전을 릴리스 한 다음이를 제어 할 수있는 경우입니다. –

+0

실제로 거기에있는 것보다 더 많이 읽고있을 수도 있습니다. 그러나 OP의 게시물을 읽으면 그의 구성 요소가 어셈블리에서 다른 사람들이 사용하고 있다는 느낌을 받게됩니다. 그러나 함께 연주하기 위해서는 그의 구성 요소가 호환성을 확인하는 기능이 필요합니다. 만약 내가 옳다면, 나는 아래의 Bart에 동의하고이 목적을 위해 const를 사용하는 것에 대한 문제점을 보지 못한다. – Kevin

답변

3

저는 const를 사용하고 싶습니다. (사실, 저는 그것을 사용합니다). readonly은 런타임에 초기화되지만 사실 응용 프로그램을 실행할 때마다 다른 값을 가질 수 있습니다 [1]. 이 속성 때문에 버전 번호가 덜 유용하다고 말할 수 있습니다.

컴파일시 하드 코드 된 버전 번호는 const입니다. 비교는 C에서 #define 일 수 있습니다.

이 차이로 인해 constreadonly처럼 데이터 메모리를 사용하지 않습니다. 나는 그것에 대한 소스가 없습니다.

[1] http://en.csharp-online.net/const,_static_and_readonly

+0

'readonly'는 정적이어서는 안되기 때문에 사용 된 메모리는'const'와는 다릅니다 (이것은 메모리와 관련하여 정적 필드처럼 작용합니다). – Bartosz

+0

그것은 내가 다른 사람 게시물을 읽을 때 나는 내가 const를 늘리고 내 dll을 교환하면 다른 어셈블리는 여전히 오래된 const 값을 사용할 수 있다는 인상을 받았다. – Dunken

+0

@Dunken, 나는 그것이 될지 모르겠다. 경우. 그러나 테스트하기 쉽습니다. –

관련 문제