2012-07-12 19 views
5

Pregunta súper simple Estoy seguro, pero no hago F # normalmente, es un poco nuevo en la sintaxis.F # - qué coincide con ... con | :? X como x significa?

¿Cómo se lee el siguiente fragmento de código:

 match shape.Fill with 
      | :? PictureBrush as pb -> 
       //.... 

En concreto, no estoy seguro de lo que se refiere a PictureBrush. Realmente no hay ninguna referencia en ningún otro lugar en este archivo

Respuesta

8

Esto es Type Test Pattern.

PictureBrush es un tipo. shape.Fill coincide con :? PictureBrush cuando la propiedad Fill es asignable a ese tipo.

1

Es una comparación de tipo. Como typeof (xx) en C#. Así que coincida con el tipo de PictureBrush.

+3

Creo que es más como ['is'] (http://msdn.microsoft.com/en-us/library/scekt9xw (v = vs.110) .aspx). – Daniel

2

También tenga en cuenta que el as permite que el enlace de una variable sea de ese tipo. Por lo tanto, pb será del tipo PictureBrush, pero tendrá exactamente el mismo valor que shape.Fill resuelto.

Cuestiones relacionadas