2013-12-14 4 views
0

필요합니다. 선택적 매개 변수가있는 인덱서를 만들고 싶습니다. 기본값은 해당 배열의 항목 수입니다. 객체 참조가 비 정적 필드, 메서드 또는 속성 'OverloadedIndexer.stringData' 필요선택적 매개 변수 - 객체 참조 나는 클래스 생성자에 설정된 크기 <em>StringData가</em>라는 개인 배열 필드를 가지고 내 <em>OverloadedIndexer</em> 클래스에서 오류

:

불행하게도,이 게시물 하단의 코드 라인은 다음과 같은 컴파일 타임 오류가 발생합니다

public string this[string data, int maxOccurences = stringData.Length] 

작동시키기위한 방법이 있습니까?

답변

3

기본값은 상수이어야합니다. 다른 변수에 의존하는 값을 제공 할 수 없습니다. 그럼 괜찮을거야.

public string this[string data, int maxOccurences = 0] 

하지만 유효하지 않은 내용입니다. 틀림없이 당신이 얻는 오류 메시지는 약간 다른 이유에 대한 것이지만, 당신이 그 과거를 지나칠지라도, 당신은 constance 문제에 부딪 힐 것이다.

+0

아, 좋습니다. 나는'Int32.MaxValue'와 같은 상수 필드를 생성하고 그것을 매개 변수의 디폴트 값으로 설정함으로써 작동하게 만들었습니다. – Kapol

2

는 MSDN Named and Optional Arguments

Each optional parameter has a default value as part of its definition. If no argument is sent for that parameter, the default value is used. A default value must be one of the following types of expressions:

  • 일정한 식 참조;
  • 새로운 ValType() 형식의 표현식입니다. 여기서 ValType은 열거 형 또는 구조체와 같은 값 유형입니다.
  • 형식 default (ValType) 인 입니다. 여기서 ValType은 값 형식입니다.