que quiere decir
this(t => { })
Piense en ello como esto. Necesita t => anonymous-expression-body
. En este caso, anonymous-expression-body
es expression
o block
. No puede tener una expresión vacía por lo que no puede indicar un cuerpo de método vacío con un expression
. Por lo tanto, debe usar un block
en cuyo caso puede decir { }
para indicar que a block
tiene un statement-list
vacío y, por lo tanto, es el cuerpo vacío.
Para más detalles, ver la especificación de la gramática, el apéndice B.
Y aquí es otra manera de pensar en ella, que es una forma que se puede utilizar para descubrir esto por sí mismo. Un Action<T>
es un método que admite T
y devuelve void
. Puede definir un Action<T>
a través de un método no anónimo o mediante un método anónimo. Está tratando de descubrir cómo hacerlo usando un método anónimo (o más bien, un método anónimo muy especial, a saber, una expresión lambda). Si quería hacer esto a través de un método no anónimo que diría
private void MyAction<T>(T t) { }
y luego se podría decir
this(MyAction)
que utiliza el concepto de un grupo método. Pero ahora quieres traducir esto a una expresión lambda. Entonces, tomemos ese cuerpo de método y hagamos que sea una expresión lambda. Por lo tanto, tiramos el private void MyAction<T>(T t)
y lo reemplazamos por t =>
y copiamos literalmente el cuerpo del método { }
.
this(t => { })
Boom.