Utilizzare l'operatore condizionale Null sulla proprietà dell'oggetto Null

c# c#-6.0 entity-framework-core

Domanda

Vorrei utilizzare l'Operatore Null-Conditional per verificare la proprietà SubscriptionExpires seguito.

    public partial class Subscription
{
    [Key]
    public int SubscriptionId { get; set; }
    public string SubscriberId { get; set; }
    public DateTime? SubscriptionExpires { get; set; }

    public virtual ICollection<ApplicationUser> Users { get; set; }
}

Un abbonamento viene restituito da

var subscription = _customersContext.Subscriptions.Where(s => s.SubscriptionId == user.SubscriptionId).FirstOrDefault();

Tuttavia se l' Subscription è nullo, Subscription?.SubscriptionExpires restituisce null reference exception , quindi restiamo con il vecchio

if (subscription != null)

Come utilizzare l'operatore condizionale Null per leggere una proprietà quando l'oggetto parent può essere nullo?

Risposta accettata

Come utilizzare l'operatore condizionale Null per leggere una proprietà quando l'oggetto parent può essere nullo?

Lo fai come hai fatto con l' Subscription?.SubscriptionExpires . Questo non genererà una NullReferenceException , ma restituirà DateTime? . Se si tenta di utilizzare un DateTime? Il valore di allora otterrai un'eccezione. Quindi questo non getterà:

var expiration = Subscription?.SubscriptionExpires;

Ma questo può:

DateTime? expiration = Subscription?.SubscriptionExpires;
DateTime expiration.Value;

Risposta popolare

Se si desidera che "scadenza var" non debba mai generare eccezioni durante l'utilizzo come datatype DateTime che è possibile utilizzare

var expiration = subscription?.SubscriptionExpires ?? DateTime.MinValue;


Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché