chcesz powiedzieć
this(t => { })
myśleć o tym, jak ten. Potrzebujesz t => anonymous-expression-body
. W tym przypadku anonymous-expression-body
to expression
lub block
. Nie możesz mieć pustego wyrażenia, więc nie możesz wskazać pustej treści metody z expression
. Dlatego należy użyć wartości block
, w którym to przypadku można powiedzieć { }
, aby wskazać, że block
ma pusty i dlatego jest pustym ciałem.
Aby uzyskać szczegółowe informacje, zobacz specyfikację gramatyki, Dodatek B.
A oto inny sposób, aby myśleć o tym, co jest sposobem, który można użyć, aby odkryć to dla siebie. An Action<T>
to metoda, która pobiera T
i zwraca void
. Możesz zdefiniować Action<T>
za pomocą metody nieanonimowej lub anonimowej. Próbujesz dowiedzieć się, jak to zrobić, używając anonimowej metody (lub raczej bardzo specjalnej anonimowej metody, a mianowicie wyrażenia lambda). Jeśli chcesz to zrobić za pomocą metody nieanonimowego powiedziałbyś
private void MyAction<T>(T t) { }
i wtedy można powiedzieć
this(MyAction)
który wykorzystuje koncepcję grupy metody. Ale teraz chcesz przetłumaczyć to na wyrażenie lambda. Tak więc, po prostu weźmy tę treść metody i uczyńmy ją wyrażeniem lambda. Dlatego wyrzucamy private void MyAction<T>(T t)
i zastępujemy go t =>
i kopiujemy dosłownie treść metody { }
.
this(t => { })
Bum.