Sociedaccion, publicación de artículos gratis, participación ciudadana, notas de prensa
  Usuario: Clave:    
   
 
Publicación de artículo gratis
Documento sin título
Llegó el futuro, sólo que no lo encuentro.   por    
Documento sin título
 
Documento sin título
 
Documento sin título
Home
Xnechijli01 6/17/2019 2:36:42 PM
Xnechijli01
Genéricos y tipos anulables en C#
Genéricos y anulables en C#
votos 0 comentarios 0 enviar vínculo a un amigo
Tags C# C# 8
 
Genéricos y tipos anulables en C# 8 recurriendo a C# 7
 

Genéricos y tipos anulables.

Algunas de las características de C# 7 ya no las encuentras por defecto en C# 8. Sin embargo, hay formas de seguir utilizando algunas de ellas. Como parte de nuestro curso de C# te mencionamos algunas de ellas. 

Si realizas una gran cantidad de trabajo con los genéricos, puedes encontrarte con un problema de tipos anulables. A continuación analizamos un caso específico y su solución. Considera este código:

public delegate void ValueChanged<in T>(T oldValue, T newValue);

El diseño previsto para este delegate es que oldValue y newValue sean anulables. Entonces, podrías pensar que basta con agregar un par de signos de interrogación y seguir adelante. Sin embargo, al hacerlo, devuelve este mensaje de error:

> Error CS8627 A nullable type parameter must be known to be a value type or non-nullable reference type. Consider adding a 'class', 'struct', or type constraint.

Si necesita admitir tanto tipos de valor como de referencia, no hay una manera fácil de solucionarlo. Como no se puede expresar un "o" en la restricción de tipo, necesita un delegado para las clases y otro para las estructuras.

public delegate void ValueChanged<in T>(T? oldValue, T? newValue) where T : class; public delegate void ValueChanged<T>(T? oldValue, T? newValue) where T : struct; 

Sin embargo, esto no funciona porque ambos delegados tienen el mismo nombre. Podrías darles nombres distintos, pero luego tendrías que duplicar todo el código que los usa.

Afortunadamente, C# tiene un valor de escape. Con la directiva #nullable, puedes volver a la semántica de C# 7 y el código continuará funcionando según lo previsto.

#nullable disable public delegate void ValueChanged<in T>(T oldValue, T newValue); #nullable enable 

Esta solución no está libre de defectos. Deshabilitar la característica de referencias anulables es todo o nada; no podrías usarlo para hacer oldValuenullable y newValuenon-nullable.

Esta es una forma posible de usar este código. Para poder usar mejor la plataforma de .NET te sugerimos que también tomes un curso de Visual Basic con el fin de dominar la programación. También puedes ampliarlo con el uso de una base de datos de SQL y tomar un curso de MySQL.

Te gustó esta nota, compártela con tus amigos
ico_copada.gif ico_delicious.png ico_enchilame.gif ico_facebook.png ico_fresqui.gif ico_google.gif ico_meneame.gif ico_myspace.gif ico_technorati.png ico_twitter.gif ico_yahoo.png
Visitá otras notas de Xnechijli01
Solo mayúsculas con JavaScript
Pone minúsculas con JavaScript
mayúsculas y minúsculas con JavaScript
Ventajas de la renta de aulas
Alquila tus aulas en las horas libres
Excel y tres fórmulas básicas
 
Comentarios 0  
Enviá tu comentario
Para dejar tu comentario debes ser miembro de Sociedaccion.
 
Documento sin título
 
Documento sin título
 
 
 
 
Documento sin título
 
Nos contaron qué leen
Documento sin título
 
Documento sin título
ULTIMOS PUBLICADOS Internet
Solo mayúsculas con JavaScript
Xnechijli01
Cómo poner todo el texto solo en mayúscula con JavaScript
 
10/16/2019 9:51:44 PM
 
Pone minúsculas con JavaScript
Xnechijli01
Cómo cambiar por letras minúsculas con JavaScript
 
10/16/2019 9:45:35 PM
 
mayúsculas y minúsculas con JavaScript
Xnechijli01
Modifica letras con JavaScript
 
10/16/2019 9:40:28 PM
 
La calculadora Windows ahora es multiplataforma
Xnechijli01
Dificultades de portar el código en C#
 
9/24/2019 5:09:39 PM
 
Calculadora multiplataforma
Xnechijli01
Dificultades de portabilidad
 
9/24/2019 4:59:33 PM
 
GDPR: ¿el primer paso hacia una ley de privacidad global?
ipswitch
Las agencias de protección de datos de toda la Unión Europea han recibido alrededor de 94.000 quejas desde el 25 de mayo de 2018 a la actualidad. ¿Qué sucede por fuera de la Unión Europea?
 
9/20/2019 2:34:34 PM
 
¿Emergencias lejos de casa?
MariF
Internet es una herramienta que agiliza todo tipo de trámites, sobre todo porque puedes hacerlo en cualquier momento desde el movil
 
9/18/2019 3:13:18 AM
 
¿Se puede ser Youtuber y ganar dinero sin mucha inversión?
MariF
En la actualidad no hace falta decir que la plataforma de YouTube es una de las más visitadas a nivel mundial, en concreto YouTube se encuentra en la segunda posición por detrás del gigante Google.
 
9/3/2019 4:54:41 AM
 
Herramientas para Python y IoT
Xnechijli01
Herramientas para usar Python en IoT
 
8/27/2019 4:33:16 PM
 
Algunas ventajas de usar Python
Xnechijli01
Existen ventajas y desventajas de usar el lenguaje de programación de Python
 
8/27/2019 4:25:28 PM
 
Documento sin título
 
Documento sin título
 
Documento sin título
 
 
Documento sin título
 
 
 
Documento sin título
 
Publicar es gratis, sólo tienes que registrarte y escribir.