在 Null 对象的 属性 上使用 Null 条件运算符

Use Null Conditional Operator on property of Null Object

我想使用 Null-Conditional Operator 来检查下面的 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; }
}

返回订阅
var subscription = _customersContext.Subscriptions.Where(s => s.SubscriptionId == user.SubscriptionId).FirstOrDefault();

但是如果Subscription是null,Subscription?.SubscriptionExpiresreturns一个null reference exception,所以我们还是剩下旧的

if (subscription != null)

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

How do I use the Null-Conditional Operator to read a property when the parent object can be null?

您可以像 Subscription?.SubscriptionExpires 一样进行操作。这不会抛出 NullReferenceException,但会抛出 return DateTime?。如果您尝试使用 DateTime? 的值,则会出现异常。所以这不会抛出:

var expiration = Subscription?.SubscriptionExpires;

但这可能:

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

如果您希望 "var expiration" 在将其用作 DateTime 数据类型时永远不会抛出异常,您可以使用

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