C #에서 배열 리터럴을 반환하는 방법


87

다음 코드를 시도하고 있습니다. 오류가있는 줄이 표시됩니다.

int[] myfunction()
{
    {
      //regular code
    }
    catch (Exception ex)
    {                    
       return {0,0,0}; //gives error
    }
}

문자열 리터럴과 같은 배열 리터럴을 어떻게 반환 할 수 있습니까?


4
C #에는 실제로 배열 리터럴이 없지만 허용 된 답변이 참조하는 배열 초기화 구문이 있다는 것도 가치가 없습니다. 리터럴은 직접 직렬화 할 수 있고 const필드에 할당 할 수 있다는 점에서 특별 합니다. 이것은 배열 초기화 구문의 경우가 아닙니다.
cwharris

답변:


164

다음과 int같은 배열을 반환합니다 .

return new int [] { 0, 0, 0 };

암시 적으로 배열을 입력 할 수도 있습니다 . 컴파일러는 값만 int[]포함되어 있어야한다고 추론 int합니다.

return new [] { 0, 0, 0 };

6
Woah ho, 암시 적으로 배열을 입력 할 수 있는지 몰랐습니다! +1
Chris Sinclair

1
나는 new int [] {0,0,0}그것도 작동 한다는 것을 알았다 . 제 생각에는 더 명확 할 것입니다.
sgarg 2014 년

3
@sgarg 대답과 동일한 것 같습니다. 그리고 나는 동의하지 않는다. 배열의 암시 적 타이핑은 상수를 부동 소수점으로 변경하면 자동으로 올바른 배열 유형을 얻을 수 있음을 의미합니다.
NetMage

12

Blorgbeard는 정확하지만 .NET 4.0 Tuple 클래스에 대한 새로운 사용을 고려할 수도 있습니다. 반품 할 항목 수가 정해진 경우 작업하는 것이 더 쉽다는 것을 알았습니다. 배열에서 항상 3 개의 항목을 반환해야하는 경우와 마찬가지로 3-int 튜플은 그것이 무엇인지 명확하게합니다.

return new Tuple<int,int,int>(0,0,0);

또는 단순히

return Tuple.Create(0,0,0);

2
항목 수가 가변적이지만 추가 기능이 필요한 경우 다음을 수행 할 수도 있습니다.return new List<int>(new int[]{0,0,0});
Dave

1
@ 데이브가 List<int>(Enumerable.Repeat(0, 3))더 좋지 않을까요?
NetMage

@NetMage 확실히 항목 수를 변경하고 싶다면 더 좋을 것입니다.
Dave

9

배열의 크기가 고정되어 있고 0으로 채워진 새 배열을 반환하려는 경우

return new int[3];
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.