2009-10-15 4 views
2

이전에 코드에서 상수 및 상수를 보았지만이를 사용하기에 적절한 시점과 위치는 언제입니까? 내가 본 프로그램을 사용하는 다른 방법을 볼 수 있습니까? 어느 누구도 저에게 한 번도 사용한 적이없는 진정한 이익을 말해 줄 수 있습니까?C# 상수 및 대리자

+3

대리인과 상수에 대해 별도로 질문 할 가치가 있습니다. 이것은 다소 독립적 인 개념이기 때문에 대답하기가 어렵습니다. – Chris

+0

상수에 대한 다른 방법 : 값을 직접 사용 (코드를 이해하기에 좋지 않음)하고, 대리인을위한 다른 방법은 없습니다. – Abel

답변

2

참석자는 수업에 일정을 추가하거나 비동기적인 활동을하는 경우 절대적으로 필요합니다 (대리인을 추가해야하는 다른 여러 가지 이유가 있습니다). 이점은 매우 유연한 접근 방식이라는 것입니다.

상수는 "매직 넘버"방지에 도움이됩니다. Aka는 의미 론적으로 동일한 상수 데이터를 지정할 수있는 중심적인 위치를 제공합니다. 그들의 이익은 절대적으로 성능이나 메모리 오버 헤드가 발생하지 않는다는 것입니다.

1

상수는 pi (3.14159 ...)와 같은 값에 사용해야합니다. 을 사용하면 코드가 현명하게 읽는 것을 의미한다 :

double circumference = radius * 2.0 * PI; 

그것은 또한 일정 변경의 값이 (! 분명하지 PI를위한) 다음은 한 곳에서 코드를 변경해야하는 경우 있음을 의미한다.

5

내가, 당신이 요구하지 않더라도, C#으로 constreadonly의 차이를 강조하고 싶습니다이 중요 할 수 있습니다

  1. const 변수는 컴파일 할 때 리터럴 값으로 대체됩니다. 즉, 값을 변경하면 (예 : PI에 자릿수를 추가하거나 MAX_PROCESSORS을 늘릴 수 있음) 다른 구성 요소는이 상수를 사용하면 새 값을 볼 수 없습니다.
  2. readonly 변수는 변경할 수 없지만 컴파일 할 때 리터럴 값으로 대체되지 않습니다. 참조를 업데이트하면 응용 프로그램의 다른 구성 요소가 즉시이 업데이트를 볼 수 있으므로 다시 컴파일 할 필요가 없습니다.

이 차이는 미묘하지만 버그를 미묘하게 소개 할 수 있기 때문에 매우 중요합니다. 여기서 교훈은 다음과 같습니다. 만 사용하면 절대 값이 변하지 않을 것이라고 확신 할 때 readonly을 사용하십시오.

대리인은 메서드 호출의 자리 표시 자 (청사진, 서명)입니다. 나는 그들을 의 인터페이스 선언 인으로 간주한다. 대리자 변수는 대리자 형식입니다. 메소드 인 것처럼 사용할 수 있습니다 (아직 동일한 메소드 서명의 다른 구현을 가리킬 수 있음).

+3

BTW : 상수와 관련된 모든 문제를 방지하는 간단한 규칙이 있습니다. 개인 또는 내부 상수 만 작성하십시오. 절대 공개하지 마라. 그렇다면 언제든지 원할 때마다 사용할 수 있습니다. 그러나 공적인 상수를 위해 당신은 옳습니다. 그들은 정말로 절대로 바꿀 필요가 없습니다. – Foxfire

+0

+1 사실 엄청난 규칙이지만, 예외는 있지만 희귀하고 내부 const와 내부 readonly의 차이가 다른 차원을 얻는 더 애매한 Reflection 기술의 영역으로 빠르게 이동합니다. – Abel