2012-05-12 2 views
0

나는이 2 개의 이상한 행동을왜 이상한 행동입니까?

1. 먼저 행동

내가 뭔가 오류를 제공하지 않습니다이

double[][] dd = 
{ 
    new double[10], 
    new double[10] 
}; 

같은 변수를 선언 한을 이해할 수 없습니다.

하지만 난 이렇게 할 경우 내가이

double[][] dd; 

dd = new double[][]{ 
        new double[10], 
        new double[10] 
        }; 

이유를 할 경우 오류

double[][] dd; 

dd = { // Here it gives 2 errors says Invalid Expression { and ; expected 
     new double[10], 
     new double[10] //Here and in the above line it says only 
        //assignment, call, increment....can be used as a statement 
    }; 

오류가 사라 준다?

2. 두 번째 행동

추가 쉼표 ,

{ 
new double[10], 
new double[10], //This comma here is not given as error. Why? 
}; 

것을 추가 쉼표없는 위 각 호의 어느 하나에 해당하는 경우에 배열의 마지막 요소 뒤에 넣을 경우이 오류가 발생하지 않는 이상 더 그 뒤에 하나 이상의 엔티티를 추가하도록 지정하십시오.

답변

4

꽤 오래된 문서이지만 여전히 관련이 있습니다. 필드 선언 (10.4), 지역 변수 선언 (8.5.1) 및 배열 생성 식 (7.5 절에 지정 될 수있다 Array Initializers

배열 이니셜 라이저는 당신이보고있는 있습니다 .10.2).

주, 그것은 그들이 당신이 당신의 첫 번째 오류와 시도하는지 인 할당 문에서 사용할 수있어 말할 수 없습니다. 두 번째 질문, 여분의 ,이 허용되는 이유에


편의 - 당신은 첫 번째 또는 마지막 항목 특별한 경우에없는 경우 코드를 프로그래밍 생성되는 경우에 특히 유용합니다. 예를 들어 다음과 같은 구문을 사용할 수 있습니다. enum 선언.

1
  1. 예제는 C#의 Array Initializer 구문의 예입니다. 이니셜 라이저 표현식은 변수를 정의한 행에서만 발생할 수 있습니다. {} 표기법이 파이썬이나 루비의 [] 배열 리터럴 표현식과 매우 비슷하다고 생각하는 것 같습니다. 그들은 실제로는 아니야.

  2. 이렇게 끝나는 쉼표를 사용하면 이니셜 라이저에서 시간이 지남에 따라 길이가 변경되는 항목 목록을 더 쉽게 만들 수 있습니다. 예를 들어 쉼표가 있기 때문에 새 항목을 끝에 추가하면 한 줄만 편집하고 쉼표를 추가하려면 한 줄을 편집하지 말고 새 내용을 추가하려면 다른 줄을 추가해야합니다.

관련 문제