在Null对象的属性上使用Null Conditional Operator

Vag*_*gue 0 c# c#-6.0 entity-framework-core

我想使用Null-Conditional运算符来检查SubscriptionExpires下面的属性.

    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; }
}
Run Code Online (Sandbox Code Playgroud)

订阅由返回

var subscription = _customersContext.Subscriptions.Where(s => s.SubscriptionId == user.SubscriptionId).FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)

但是如果Subscription为null,则Subscription?.SubscriptionExpires返回a null reference exception,所以我们仍然保留旧的

if (subscription != null)
Run Code Online (Sandbox Code Playgroud)

当父对象可以为null时,如何使用Null-Conditional运算符来读取属性?

i3a*_*non 5

当父对象可以为null时,如何使用Null-Conditional运算符来读取属性?

你就像你一样做Subscription?.SubscriptionExpires.这不会抛出NullReferenceException,但会返回DateTime?.如果您尝试使用该DateTime?值,那么您将获得异常.所以这不会抛出:

var expiration = Subscription?.SubscriptionExpires;
Run Code Online (Sandbox Code Playgroud)

但这可能:

DateTime? expiration = Subscription?.SubscriptionExpires;
DateTime expiration.Value;
Run Code Online (Sandbox Code Playgroud)