[C#] 가능한 모든 배열 초기화 구문

C #으로 가능한 모든 배열 초기화 구문은 무엇입니까?



답변

간단한 배열에 대한 현재 선언 및 초기화 방법입니다.

string[] array = new string[2]; // creates array of length 2, default values
string[] array = new string[] { "A", "B" }; // creates populated array of length 2
string[] array = { "A" , "B" }; // creates populated array of length 2
string[] array = new[] { "A", "B" }; // created populated array of length 2

Linq ToArray()확장 기능 과 같은 배열을 얻는 다른 기술이 IEnumerable<T>있습니다.

또한 위의 선언에서 첫 번째 두 개 string[]는 왼쪽의를 var(C # 3+)로 바꿀 수 있습니다. 오른쪽의 정보는 적절한 유형을 유추하기에 충분하기 때문입니다. 배열 초기화 구문만으로는 컴파일러의 요구를 충족시키기에 충분하지 않으므로 세 번째 행은 표시된대로 작성해야합니다. 네 번째는 추론을 사용할 수도 있습니다. 그래서 당신이 전체 간결한 것에 빠져 있다면, 위의 내용은 다음과 같이 쓸 수 있습니다.

var array = new string[2]; // creates array of length 2, default values
var array = new string[] { "A", "B" }; // creates populated array of length 2
string[] array = { "A" , "B" }; // creates populated array of length 2
var array = new[] { "A", "B" }; // created populated array of length 2 


답변

표현식 인 C #의 배열 작성 구문 은 다음과 같습니다.

new int[3]
new int[3] { 10, 20, 30 }
new int[] { 10, 20, 30 }
new[] { 10, 20, 30 }

첫 번째에서, 크기는 음이 아닌 정수 값일 수 있으며 배열 요소는 기본값으로 초기화됩니다.

두 번째 크기는 크기가 일정해야하며 주어진 요소 수가 일치해야합니다. 주어진 요소에서 주어진 배열 요소 유형으로의 암시 적 변환이 있어야합니다.

세 번째 요소에서 요소는 암시 적으로 요소 유형으로 변환 가능해야하며 크기는 주어진 요소 수에서 결정됩니다.

네 번째 요소에서 배열 요소의 유형은 유형이있는 모든 주어진 요소 중 최상의 유형 (있는 경우)을 계산하여 추론됩니다. 모든 요소는 해당 유형으로 암시 적으로 변환 가능해야합니다. 크기는 주어진 요소의 수에서 결정됩니다. 이 구문은 C # 3.0에서 도입되었습니다.

선언에만 사용할 수있는 구문도 있습니다.

int[] x = { 10, 20, 30 };

요소는 내재적으로 요소 유형으로 변환 가능해야합니다. 크기는 주어진 요소의 수에서 결정됩니다.

올인원 가이드가 없습니다

C # 4.0 사양 섹션 7.6.10.4 “배열 생성 표현식”을 참조합니다.


답변

비어 있지 않은 배열

  • var data0 = new int[3]

  • var data1 = new int[3] { 1, 2, 3 }

  • var data2 = new int[] { 1, 2, 3 }

  • var data3 = new[] { 1, 2, 3 }

  • var data4 = { 1, 2, 3 }컴파일 할 수 없습니다. int[] data5 = { 1, 2, 3 }대신 사용하십시오 .

빈 배열

  • var data6 = new int[0]
  • var data7 = new int[] { }
  • var data8 = new [] { }int[] data9 = new [] { }컴파일 가능한 없습니다.

  • var data10 = { }컴파일 할 수 없습니다. int[] data11 = { } 대신 사용하십시오 .

메소드의 인수로서

var키워드로 지정할 수있는 표현식 만 인수로 전달할 수 있습니다.

  • Foo(new int[2])
  • Foo(new int[2] { 1, 2 })
  • Foo(new int[] { 1, 2 })
  • Foo(new[] { 1, 2 })
  • Foo({ 1, 2 }) 컴파일 할 수 없다
  • Foo(new int[0])
  • Foo(new int[] { })
  • Foo({}) 컴파일 할 수 없다

답변

Enumerable.Repeat(String.Empty, count).ToArray()

‘카운트’번 반복되는 빈 문자열 배열을 만듭니다. 동일하지만 특별한 기본 요소 값으로 배열을 초기화하려는 경우. 참조 유형에주의하여 모든 요소는 동일한 객체를 참조합니다.


답변

var contacts = new[]
{
    new
    {
        Name = " Eugene Zabokritski",
        PhoneNumbers = new[] { "206-555-0108", "425-555-0001" }
    },
    new
    {
        Name = " Hanying Feng",
        PhoneNumbers = new[] { "650-555-0199" }
    }
};


답변

사전 초기화 된 동일 (이 아닌 null또는 다른 default) 요소 의 고정 배열을 초기화 하려면 다음을 사용하십시오.

var array = Enumerable.Repeat(string.Empty, 37).ToArray();

또한 토론에 참여하십시오 .


답변

사용자 정의 클래스의 배열을 만드는 예

아래는 클래스 정의입니다.

public class DummyUser
{
    public string email { get; set; }
    public string language { get; set; }
}

다음은 배열을 초기화하는 방법입니다.

private DummyUser[] arrDummyUser = new DummyUser[]
{
    new DummyUser{
       email = "abc.xyz@email.com",
       language = "English"
    },
    new DummyUser{
       email = "def@email.com",
       language = "Spanish"
    }
};