2 wyrażenia lamda w jednym delegacie

0

Cześć :) Da się jakoś do jednego delegata podpiąć 2 wyrażenia lambda np.

int liczba = 10;
ChangeNumber changenumber = (a => a - 2);
changenumber += (a => a * a);
liczba = changenumber(liczba);

Wiem że mogę po prostu obie operację wykonać w jednym wyrażeniu, ale o tylko przykład. Generalnie jak wypluję wynik na konsole to okazuje się że liczba = 100. Ktoś potrafi to wytłumaczyć dlaczego wykonuje się tylko ta druga lambda?

1

Nie znam się na C#, ale to co chcesz zrobić wygląda na zwykła kompozycję funkcji:

ChangeNumber subtractTwo = a => a - 2;
ChangeNumber square = a => a * a;
ChangeNumber doBoth = a => square(subtractTwo(a));

int liczba = 10;
int result = doBoth(liczba);

Z tego co wyczytałem tutaj, metody w delegacie są odpalane niezależnie i jest zwracany wynik ostatniej z nich.

0

Wklej cały program to ci wytłumaczę wszystko

0

Jeśli chodzi o samo zachowanie to w przypadku gdy podepniemy do delegate kilka metod, które coś zwracają, to zwracana jest zawsze wartość ostatniej metody.

0

Dokładnie tak jest bo nie może być inaczej :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1