2012-03-07 7 views
12

¿Cómo creo una clase que se pueda anular (?) En C#? Me gusta:Crear clases anulables

public class Hello1 { 
    public int Property1 { get; set; } 
} 

public class Hello2 { 
Public Hello1? Property2 { get; set; } //Hello1 should work when it has "?" 
} 

Quiero hacer que Hello1 clase tome el formulario "Hola1?" si es necesario.

+1

Este es un duplicado de http://stackoverflow.com/questions/3132667/nullable-class – evasilchenko

Respuesta

31

No es necesario crear un tipo anulable para los tipos de referencia. Ya son nullable. Solo necesita hacer esto para tipos de valor como int, bool, decimal, etc ...

+0

Ok, estaba confundiendo el KeyValuePair con una clase Era una estructura así que requería "?". Intentaba crear lo mismo. Que tiene sentido. – iefpw

8

No es necesario; los tipos de referencia ya pueden ser null. En cuanto a las estructuras, simplemente anexando un ?se trabajo. Así que simplemente elimine el ?, y verifique null usando == null, como de costumbre.

0

Hello1 ya se puede anular. No necesita el ? en su propiedad.

Editar - sospecho que podría estar tratando de establecer Hello1.Property1 en nulo, y que está esperando que hacer Hello1 anulable permitirá eso. No lo hará. Debe marcar Property1 como nulable si lo hace.

1

Todas las clases son nulas. nullable es para tipos de valor que no pueden ser nulos

0

Hello1 ya es un tipo de referencia, por lo que puede ser null ya.
La sintaxis anulable "classname?" solo se puede aplicar a ValueTypes, como int, DateTime, float etc., que normalmente no pueden ser null.

2

Simplemente elimine el signo de interrogación. Todas las clases son anulables por defecto. Solo los objetos de tipo valor (como struct) deben ser explícitamente anulables.