2011-07-29 17 views
7

Duplicar posibles:
? (nullable) operator in C#Significado del? operador en C# para las propiedades

En System.Windows.Media.Animation que ver el código de la siguiente manera:

public double? By { get; set; } 

Lo que hace el ? operador hacer aquí? ¿Alguien sabe?

He intentado googlear esto pero es difícil buscar al operador si no sabes cómo se llama por su nombre. He revisado la página en Operadores (http://msdn.microsoft.com/en-us/library/6a71f45d(v=vs.80).aspx) pero? el operador no está listado allí.

Gracias!

+3

tipo nullable: http://msdn.microsoft.com/en-us/library/1t3y8s4s(v=vs.80).aspx – CRice

+0

normalmente una pregunta como esta se cerrará como duplicado, pero es cierto - muy difícil google para "C#? operator". – RPM1984

+0

@ RPM1984, incluso Google para '" ¿doble? " C# 'no funciona! –

Respuesta

18

El ? es un decorador tipo. T? es la misma que Nullable<T>, es decir, un tipo de valor anulable.

El documentation of the By property explica por qué es usado aquí:

La propiedad controla cómo progresa A DoubleAnimation, pero en lugar de establecer la propiedad By, también puede establecer From y To propiedades (o cualquiera) para controlar el progreso de la animación. Se permite cada combinación de propiedades (excepto To y By), por lo que debe haber una forma de indicar que una propiedad es no configurada - por lo tanto, es anulable.

Utilice la propiedad By cuando desee animar un valor "por" una determinada cantidad, en lugar de especificar un valor inicial o final. También puede usar la propiedad By con la propiedad From.

+0

Nota al margen: una forma de utilizar tipos anulables: primero debe comprobar si 'By.HasValue' está establecido en' true', y luego acceder a su valor con 'By.Value' –

+0

¡Gracias! Eso es muy bonito. ¿Por qué lo usarían para esta clase? – swinefeaster

+0

Por una serie de razones, por lo que no tiene idea en este caso: P –

2

Esto no es un operador. Más bien, esta es una sintaxis abreviada especial para declarar los valores nullable.

1

Es propertie anulable, que significa que se puede establecer By = null, sin ? obtendrá el doble de error que no puede ser nula

1

? representa tipos anulables, esto califica By en su caso para contener un valor nulo que no es posible para un tipo de valor

1

este es el azúcar sintáctico manejado por el compilador C#.

Básicamente tratar "doble?" como Nullable que permite que el valor sea nulo. Básicamente, envuelve el doble valor dentro de otro objeto.