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"
}
};