초기화하지 않고 배열에 값을 할당하는 방법은 무엇입니까?C#의 값 할당
string[] s={"all","in","all"};
I mean why did not the compile show error?.Normally we need to
initialize ,before assign values.
초기화하지 않고 배열에 값을 할당하는 방법은 무엇입니까?C#의 값 할당
string[] s={"all","in","all"};
I mean why did not the compile show error?.Normally we need to
initialize ,before assign values.
구문 당입니다.
이 모든 요소가 할당 될 때까지 배열 참조는 s
할당되지 않는다는
string[] tmp = new string[3];
tmp[0] = "all";
tmp[1] = "in";
tmp[2] = "all";
string[] s = tmp;
참고
string[] s = {"all","in","all"};
는 동일한 코드로 컴파일된다.즉, 우리가 새로운 변수를 선언하고이 특정 경우에는하지 않는 것이 중요하지만,이 상황에서 다른 만들 것 :
string[] s = { "first", "second" };
s = new string[] { s[1], s[0] };
같은 개체 및 컬렉션 이니셜 라이저 마찬가지입니다 - 변수는 끝에서만 할당됩니다.
배열에서만 이완됩니까? – user193276
ooh John Skeet의 코드에서 버그를 발견했습니다! s는 정의되어 있지 않습니다. 2 번째 줄입니다. tmp [0] = "all"을 의미한다고 생각합니다. –
Doh - thanks :) –
string[] s = new string[] { "all","in","all"};
하고 속기 버전
string[] s = {"all","in","all"};
같은 일이다. 자세한 내용은 MSDN (배열 초기화 섹션 참조)을 참조하십시오.
초기화하지 않고 배열 변수를 선언 할 수 있습니다.
확인이 밖으로 http://msdn.microsoft.com/en-us/library/0a7fscd0%28VS.71%29.aspx
난 당신이 다음과 같이 먼저 배열을 초기화 할 필요 기대 왜
string[] s={"all","in","all"};
작품을 알고 싶은 생각 :
string[] s = new string[];
또는
string[] s = new string[] {"all","in","all"};
대답은 단지 컴파일러 마술입니다. 컴파일러는 초기화를 기반으로 배열의 크기를 알기 때문에 장면 뒤에서 배열을 만듭니다. var
키워드와 마찬가지로 입력하는 데 필요한 중복 정보의 양을 제한하는 것이 중요합니다.
으로 초기화 된 값을 제공합니다. 배열에 대해서만이 완화가 있습니까? Pesron a = {Name = "somename"} ?? – user193276
"배열에 값 지정"이 아닙니다. "array to reference"유형의 변수를 초기화하고 있습니다. 초기화하는 값은 단축 배열 이니셜 라이저 구문 {...}
을 사용하여 생성 된 배열에 대한 참조입니다. 배열 타입 변수의 초기화에서만 허용되지만 new T[] { ... }
과 정확히 동일합니다. 여기서 T
은 변수 유형에서 추론됩니다.
당신은 C# 3 이상에서 새 문자열 [] 부분이 필요하지 않습니다 -이
string[] s = { "all","in","all"};
잘 그것은 조금 더 똑똑 인 당신이 무슨 뜻인지 운동 컴파일러의 단지 사건 작동합니다 - 후단 (IL)은 동일 할 것이다.
두 가지 단계가 필요하지 않으므로 간단히 입력 할 수 있습니다. 그것 설탕을 고려하십시오.
당신이 보여준 것처럼 ... 아니면 여기서 질문의 부분을 얻지 못합니다. –
질문이 확실하지 않습니다. –
우리는 '어떻게 초라한 형성인가?'와 같은 stackoverflow를 발견 했습니까? – Chris