작업 순서 사용하는 개체의 이니셜라이저는 구문
-
20-08-2019 - |
문제
지는 순서가 설정된 속성을 사용하는 개체의 이니셜라이저 구문을 실행에 정확히 같습니까?
예를 들면 나는 이것:
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
내가 믿는 첫 번째 옵션은 실제로 찍은,그러나이었다는 것을 증명을 통해 더 많은 이점을 얻을 수 있습니다.
난 것도 아 주의 실제 코드 작성에 달려 있는 이...