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 3:59:35 PM
Xnechijli01
Anulabilidad de variable en C# 8
Anulabilidad en C# 8
votos 0 comentarios 0 enviar vínculo a un amigo
Tags C#
 
Anulabilidad de variable en C# 8 mediante cdigo.
 

Anulabilidad de variable en C# 8

Como parte de nuestro curso de C# te explicamos este tema. La nulabilidad de una variable está determinada por otra variable. En este siguiente ejemplo de código, la clase está diseñada de tal manera que m_ListeningToItemEvents será verdadero si y solo si m_ItemPropertyChanged no es nulo. No hay forma de que el compilador conozca esta regla. Cuando eso ocurra, puedes agregar el operador de nulidad (!) a la variable (m_ItemPropertyChanged en este caso) para indicar que no será nulo en ese momento.

if (m_ListeningToItemEvents) { if (item is INotifyPropertyChangedWeak) ((INotifyPropertyChangedWeak)item).AddHandler(m_ItemPropertyChanged!); else if (item is INotifyPropertyChanged) ((INotifyPropertyChanged)item).PropertyChanged += OnItemPropertyChanged; } 

Corrección de falsos positivos con casting explícito.

En este siguiente ejemplo, el compilador informa falsamente que la nulabilidad de m_Base.Values ??no es compatible con IEnumerable <TValue>. Para eliminar la advertencia, puedes agregar el reparto explícito que se ve a continuación:

readonly Dictionary<ValueTuple<TKey1, TKey2>, TValue> m_Base; IEnumerable<TValue> IReadOnlyDictionary<ValueTuple<TKey1, TKey2>, TValue>.Values { get { return (IEnumerable<TValue>)m_Base.Values; } } 

Ten en cuenta que el compilador marca esa línea como una conversión redundante. Normalmente, este es un mensaje del compilador, en lugar de una advertencia, pero es de esperar que se corrija a tiempo para el momento del lanzamiento.

Corrección de falsos positivos con variables temporales o conversiones condicionales.

En el siguiente ejemplo, el compilador indica que hay un error en la línea CancelEdit. Aunque la instrucción if anterior prueba que item.Value no es nulo, el compilador no confía en que la próxima vez que lea el item.Value todavía no sea nulo.

foreach (var item in m_CheckpointValues) { if (item.Value is IEditableObject) ((IEditableObject)item.Value).CancelEdit(); } 

Una forma de satisfacer al compilador es almacenar item.Value en una variable temporal.

foreach (var item in m_CheckpointValues) { object? value = item.Value; if (value is IEditableObject) ((IEditableObject)value).CancelEdit(); } 

Pero en este caso, podemos simplificarlo aún más utilizando una conversión condicional, como operador, seguida de una invocación de método condicional.

foreach (var item in m_CheckpointValues) { (item.Value as IEditableObject)?.CancelEdit(); } 

En una nota siguiente hablaremos más de este tema. Para poder entender mejor los lenguajes de programación, puedes tomar un curso de Visual Basic, para complementar tu uso de .NET. Además te ayudará 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
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.