Tak.
Przepraszam za przerwanie (muszę tak często wykonywać pracę). Spec nie wyraźnie powiedzieć, lecz to sprawia, że całkiem jasne IMO części 7.6.10.2:
Przedmiotem Inicjator składa się z sekwencji inicjalizatorów członkowskich, zamkniętych {i} żetonów i oddzielonych przecinkami.
(Uwaga słowo „sekwencji” tutaj, zamiast „set” Osobiście uważam, że to istotne, jako sekwencja jest uporządkowane.).
Poniższa klasa reprezentuje punkt z dwóch współrzędnych:
public class Point
{
int x, y;
public int X { get { return x; } set { x = value; } }
public int Y { get { return y; } set { y = value; } }
}
instancja punkt może być utworzony i inicjowany w następujący sposób:
Point a = new Point { X = 0, Y = 1 };
, który ma ten sam efekt a s
Point __a = new Point();
__a.X = 0;
__a.Y = 1;
Point a = __a;
gdzie __a jest niewidoczną i niedostępną w inny sposób zmienną tymczasową.
EDIT: miałem odpowiedź od Mads Torgersen, który powiedział, że w zasadzie wszystko, co można zrobić teraz będzie zachować kolejność. W przyszłości mogą istnieć pewne dziwactwa, w których zamówienie nie jest zachowywane w dziwnych przypadkach, gdy robisz coś innego niż ustawienie właściwości/pola, ale to zależy od tego, gdzie ten język się znajduje.
Warto zauważyć, że w rzeczywistości dzieje się tu dużo kroków - jest kolejność wykonywania oceny argumentów (tj. Bitów RHS) i kolejność wykonywania zadań. Na przykład, jeśli masz:
new Foo
{
A = X,
B = Y
}
wszystkie następujące rozkazy są możliwe, jednocześnie zachowując kolejność wykonywania faktycznej własności (A i B):
- ocenić X, przypisywanie do A, ocenić Y, przypisywanie do B
- oceniać X, ocenić Y, przypisać do przypisać do B
- ocenić Y, ocenić X, przypisanie do A, przypisać do B
Uważam, że pierwszą opcją jest ta, która faktycznie została podjęta, ale miało to na celu wykazanie, że jest w niej coś więcej, niż na pierwszy rzut oka.
Byłbym również bardzo ostrożny rzeczywiście pisanie kodu, który polega na tym ...
Dude! Jesteś lepszy niż Chuck Norris! – Micah
ty jesteś referencją. – Micah
Moim największym zmartwieniem jest to, że zadania pojawiają się w kolejności, w jakiej je wymieniam. Nie martwię się o porządek oceny po stronie prawej tak samo jak o rzeczywistą kolejność przypisania lewej strony. – Micah