xitio, publicación de artículos gratis, participación ciudadana, notas de prensa
  Usuario: Clave:    
 
 
Documento sin título
 
Documento sin título
 
Documento sin título
Home
Xnechijli01 6/17/2019 2:06:45 PM
Xnechijli01
Adaptar proyectos para C# 8
C# 8 y la adaptacin de proyectos
votos 0 comentarios 0 enviar vínculo a un amigo
Tags C#
 
Adaptar proyectos para usar C# 8 y tipos de referencia que aceptan nulos
 

Adaptar proyectos para usar C# 8 y tipos de referencia que aceptan nulos

Esta de nuestro curso de C# es un informe sobre la actualización de una biblioteca de clases C# 7 a C# 8 con tipos de referencia que admiten nulos. El proyecto utilizado en este estudio es una colección de clases base de estilo MVVM, código de reflexión y varias funciones de utilidad. Se eligió porque es razonablemente pequeño y tiene una buena combinación de patrones C# idiomáticos e inusuales.

Configuración del proyecto

Actualmente, los tipos de referencia anulables solo están disponibles para los proyectos .NET Standard y .NET Core. En el archivo de tu proyecto, deberás agregar o modificar la siguiente configuración:

</PropertyGroup> <LangVersion>8.0</LangVersion> <NullableContextOptions>enable</NullableContextOptions> </PropertyGroup> 

Tan pronto como la guardes, deberías poder ver que comienzan a aparecer errores de nulabilidad. 

Indicar que un tipo es anulable

En el método de interfaz GetPreviousValue, el tipo de retorno debe ser anulable. Para hacer esto explícito, el modificador de tipo de referencia anulable (?) se agrega al objeto.

object? GetPreviousValue(string propertyName);

Muchos de los errores del compilador en tu proyecto pueden resolverse simplemente anotando variables, parámetros y tipos de retorno con este modificador de tipo.

Propiedades de carga perezosa

Si una propiedad es pesada de calcular, es posible que estés usando el patrón de carga lenta. En este patrón, si un campo privado es nulo, significa que el valor aún no se ha generado.

C# 8 maneja esta situación bien. Sin alterar el código, fue capaz de analizar correctamente el código para determinar que el resultado del captador siempre será no nulo, a pesar de que la variable devuelta es anulable.

string? m_CSharpFullName; public string CSharpFullName { get { if (m_CSharpFullName == null) { var result = new StringBuilder(m_TypeInfo.ToString().Length); BuildCSharpFullName(m_TypeInfo.AsType(), null, result); m_CSharpFullName = result.ToString(); } return m_CSharpFullName; } } 

Cabe señalar que hay una condición potencial de carrera aquí. En teoría, otro hilo podría establecer el valor de m_CSharpFullName de nuevo en nulo y el compilador no podría detectarlo. Por lo tanto, ten especial cuidado al tratar con código de subprocesos múltiples.

También te informamos que seguiremos ampliando nuestro curso de MySQL y el curso de Visual Basic.

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
Chrome Out
Borges a escena
Premio engao RapiPAgo o Pago fcil cuidado
Macri y el estacionamiento pago
Participar en sociedaccion tiene sus privilegios
Redefiniciones
 
Comentarios 0  
Enviá tu comentario
Para dejar tu comentario debes ser miembro de xitio.
 
Documento sin título
 
Documento sin título
 
 
 
 
Documento sin título
 
Nos contaron que leen
Documento sin título
 
Documento sin título
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.