2009-10-21 2 views
0

초기화하지 않고 배열에 값을 할당하는 방법은 무엇입니까?C#의 값 할당

string[] s={"all","in","all"}; 

I mean why did not the compile show error?.Normally we need to 
initialize ,before assign values. 
+0

당신이 보여준 것처럼 ... 아니면 여기서 질문의 부분을 얻지 못합니다. –

+0

질문이 확실하지 않습니다. –

+0

우리는 '어떻게 초라한 형성인가?'와 같은 stackoverflow를 발견 했습니까? – Chris

답변

6

구문 당입니다.

이 모든 요소가 할당 될 때까지 배열 참조는 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] }; 

같은 개체 및 컬렉션 이니셜 라이저 마찬가지입니다 - 변수는 끝에서만 할당됩니다.

+0

배열에서만 이완됩니까? – user193276

+3

ooh John Skeet의 코드에서 버그를 발견했습니다! s는 정의되어 있지 않습니다. 2 번째 줄입니다. tmp [0] = "all"을 의미한다고 생각합니다. –

+0

Doh - thanks :) –

1
string[] s = new string[] { "all","in","all"}; 

하고 속기 버전

string[] s = {"all","in","all"}; 

같은 일이다. 자세한 내용은 MSDN (배열 초기화 섹션 참조)을 참조하십시오.

1

{"all","in","all"} 부분이 초기화입니다. 중괄호와 문자열이 짧은 손으로 표시되기 때문에 new string[] 부분을 생략 할 수 있습니다. 단일 치수 배열에서 MSDN을보십시오.

+0

아. 알아 둘만한. 나는 항상 그것을 명백하게했다. – el2iot2

3

초기화하지 않고 배열 변수를 선언 할 수 있습니다.

확인이 밖으로 http://msdn.microsoft.com/en-us/library/0a7fscd0%28VS.71%29.aspx

+1

초기화하지 않고 배열을 선언하는 것은 단지'string [] s' 일 것입니다. 위의 예제는 문자열이 초기화되는 값을 제공합니다. – Bob

+0

위의 예는 문자열 * array *이 – Bob

2

난 당신이 다음과 같이 먼저 배열을 초기화 할 필요 기대 왜

string[] s={"all","in","all"}; 

작품을 알고 싶은 생각 :

string[] s = new string[]; 

또는

string[] s = new string[] {"all","in","all"}; 

대답은 단지 컴파일러 마술입니다. 컴파일러는 초기화를 기반으로 배열의 크기를 알기 때문에 장면 뒤에서 배열을 만듭니다. var 키워드와 마찬가지로 입력하는 데 필요한 중복 정보의 양을 제한하는 것이 중요합니다.

+0

으로 초기화 된 값을 제공합니다. 배열에 대해서만이 완화가 있습니까? Pesron a = {Name = "somename"} ?? – user193276

3

"배열에 값 지정"이 아닙니다. "array to reference"유형의 변수를 초기화하고 있습니다. 초기화하는 값은 단축 배열 이니셜 라이저 구문 {...}을 사용하여 생성 된 배열에 대한 참조입니다. 배열 타입 변수의 초기화에서만 허용되지만 new T[] { ... }과 정확히 동일합니다. 여기서 T은 변수 유형에서 추론됩니다.

1

당신은 C# 3 이상에서 새 문자열 [] 부분이 필요하지 않습니다 -이

string[] s = { "all","in","all"}; 

잘 그것은 조금 더 똑똑 인 당신이 무슨 뜻인지 운동 컴파일러의 단지 사건 작동합니다 - 후단 (IL)은 동일 할 것이다.

1

두 가지 단계가 필요하지 않으므로 간단히 입력 할 수 있습니다. 그것 설탕을 고려하십시오.