your programing

선택적 매개 변수의 기본값으로 빈 배열 전달

lovepro 2020. 10. 14. 08:13
반응형

선택적 매개 변수의 기본값으로 빈 배열 전달


이 질문에 이미 답변이 있습니다.

빈 배열을 기본값으로 사용하는 선택적 배열을 취하는 함수를 어떻게 정의합니까?

public void DoSomething(int index, ushort[] array = new ushort[] {},
 bool thirdParam = true)

결과 :

'배열'의 기본 매개 변수 값은 컴파일 시간 상수 여야합니다.


개체 참조의 컴파일 타임 상수를 만들 수 없습니다.

사용할 수있는 유일한 유효한 컴파일 타임 상수는 null이므로 코드를 다음과 같이 변경하십시오.

public void DoSomething(int index, ushort[] array = null,
  bool thirdParam = true)

그리고 당신의 방법 내에서 다음을 수행하십시오.

array = array ?? new ushort[0];

배열을 마지막 인수로 만들 수 있다면 다음과 같이 할 수도 있습니다.

public void DoSomething(int index, bool wasThirdParam = true, params ushort[] array)

컴파일러는 지정되지 않은 경우 빈 배열을 자동으로 전달하며, 배열을 단일 인수로 전달하거나 요소를 가변 길이 인수로 직접 메서드에 넣을 수있는 유연성이 추가됩니다.


나는 그것이 오래된 질문이라는 것을 알고 있으며이 답변은 컴파일러에 의해 부과 된 제한을 피하는 방법을 직접 해결하지 않지만 메서드 오버로딩은 대안입니다.

   public void DoSomething(int index, bool thirdParam = true){
        DoSomething(index, new ushort[] {}, thirdParam);
   }

   public void DoSomething(int index, ushort[] array, bool thirdParam = true){

      ...
   }

참고 URL : https://stackoverflow.com/questions/3480382/passing-an-empty-array-as-default-value-of-an-optional-parameter

반응형