문제

지는 순서가 설정된 속성을 사용하는 개체의 이니셜라이저 구문을 실행에 정확히 같습니까?

예를 들면 나는 이것:

var s = new Person { FirstName = "Micah",
                     LastName = "Martin",
                     IsLoaded = true
                   }

각 객실에는 동일한 순?

도움이 되었습니까?

해결책

그렇습니다.

사과를 얻기 위해 중단(가 실제로 일시).Spec 지 명시적으로 그것을 말하지만,그것은 매우 명확한래에 나열된 모든 절 7.6.10.2:


체 이니셜라이저의 순서로 구성되어 있는 회원 이니셜라이저,로 묶어라 토큰을 쉼표로 구분됩니다.

(주의 말씀"순서"여기보다는"설정".나 개인적으로 중요하다고 생각하십,시퀀스로 할 수 있습니다.)

다음과 같은 클래스의 한 지점을 나타냅을 가진 두 개의 좌표:

public class Point
{
    int x, y;
    public int X { get { return x; } set { x = value; } }
    public int Y { get { return y; } set { y = value; } }
}

인스턴스의 지점을 만들 수 있고 초기화는 다음과 같다:

Point a = new Point { X = 0, Y = 1 };

는 것과 같은 효과

Point __a = new Point();
__a.X = 0;
__a.Y = 1; 
Point a = __a;

어디에__은 그렇지 않으면 보이지 않는 액세스 할 수없는 임시 변수가 있습니다.


편집:나는에서 응답 Mads Torgersen,누가는 기본적으로 말하는 것 아무것도 할 수 있는 것입니다 지금 보존합니다.있을 수 있지만 여전히 시뮬레이터에는 미래를 위해지 보존에서는 이상한 경우에는 당신이 뭔가 기타 보다는 속성을 설정/분야,하지만 위치에 따라 달라집니다 언어갑니다.

그것의 가치가 실제로 많은 단계를 여기에 무슨가의 실행 순서는 평가의 인수(즉RHS 비트)그리고 실행 순서의 과제입니다.예를 들어 있는 경우:

new Foo
{
    A = X,
    B = Y
}

다음과 같은 모든 주문은 가능한 유지하면서도 순서의 실제 시행(A 및 B):

  • 을 평가하 X,할당,평가,Y,할당 B
  • 을 평가하 X 평가,Y,할당 할당 B
  • 을 평가하 Y,평가,X,할당 할당 B

내가 믿는 첫 번째 옵션은 실제로 찍은,그러나이었다는 것을 증명을 통해 더 많은 이점을 얻을 수 있습니다.

난 것도 주의 실제 코드 작성에 달려 있는 이...

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top