private string? typeOfContract
{
get { return (string?)ViewState["typeOfContract"]; }
set { ViewState["typeOfContract"] = value; }
}
Más adelante en el código lo uso así:
typeOfContract = Request.QueryString["type"];
Recibo el siguiente error en la declaración de la typeOfContract
línea que indica:
El tipo 'string' debe ser un tipo de valor no anulable para poder usarlo como parámetro 'T' en el tipo genérico o método 'System.Nullable <T>'
¿Algunas ideas? Básicamente, quiero asegurarme de que "type"
exista QueryString
antes de realizar una acción.
string?
para decirle al mundo que esta cadena puede ser nula. Ref: youtube.com/watch?v=VdC0aoa7ungLo estás haciendo complicado.
string
Ya es anulable. No es necesario que sea más anulable. Saque el?
tipo de propiedad.fuente
string no puede ser el parámetro para Nullable porque string no es un tipo de valor. La cadena es un tipo de referencia.
es una declaración muy válida y no es necesario que sea anulable.
debería funcionar debido a la palabra clave as .
fuente
La cadena es un tipo de referencia, por lo que no necesita (y no puede) usar
Nullable<T>
aquí. Simplemente declare typeOfContract como cadena y simplemente verifique que sea nulo después de obtenerlo de la cadena de consulta. O use String.IsNullOrEmpty si desea manejar valores de cadena vacíos iguales a nulos.fuente
Para nulos, use
?
con todas las primitivas de C # , excepto la cadena.La siguiente página ofrece una lista de las primitivas de C # : http://msdn.microsoft.com/en-us/library/aa711900(v=vs.71).aspx
fuente
Tenga en cuenta que en la próxima versión de C #, que es 8, las respuestas no son ciertas.
All the reference types are non-nullable by default
y puedes hacer lo siguiente:Sin embargo,
Lo importante aquí es mostrar la intención de su código. Si la "intención" es que el tipo de referencia puede ser nulo, márquelo para que, de lo contrario, asignar un valor nulo a no anulable resulte en una advertencia del compilador.
Más información
Para el moderador que está eliminando todas las respuestas, no lo haga. Creo firmemente que esta respuesta agrega valor y eliminar simplemente evitaría que alguien sepa qué es lo correcto en ese momento. Como ha eliminado todas las respuestas, vuelvo a publicar la respuesta aquí. El enlace que se envió con respecto a "duplicados" es simplemente una apertura de algunas personas y no creo que sea una recomendación oficial.
fuente