2010-06-03 17 views
5

Me encuentro con una situación en la que estoy usando concordancia de patrón para determinar la propiedad de visibilidad de una columna. System.Windows.Visibility tiene dos campos, Visibility.Visible y Visibility.Collapsed. Enyone puede decirme por qué el siguiente código:Coincidencia de patrón F # con DataGridColumn.Visibility

let colItem = myDataGrid.Columns.Item 1 
    chkBox.IsChecked <- 
      match colItem.Visibility with 
       | Visibility.Visible -> new Nullable<bool>(true) 
       | Visibility.Collapsed -> new Nullable<bool>(false) 

genera la advertencia siguientes aparatos:

patrón incompleto coincide en este expresión. Por ejemplo, el valor '2uy' puede indicar un caso no cubierto por los patrones.

Respuesta

7

En teoría un valor de tipo visibilidad puede ser algo que no sea visible o se derrumbó debido enumeraciones .NET permiten a cualquier valor de tipo integral subyacente como un valor para el tipo de enumeración (para permitir cosas como la operación lógica OR enumeraciones).

+0

Derecha, las enumeraciones .NET son fachadas delgadas sobre tipos enteros, y pueden tomar cualquier valor del tipo entero subyacente. – Brian

+0

Esto es correcto. Por ejemplo, '(LanguagePrimitives.EnumOfValue 2uy: Visibility)' le dará un valor de tipo 'Visibility' que no es' Visible' ni 'Collapsed', tal como lo advierte el compilador. – kvb

Cuestiones relacionadas