在Null對象的屬性上使用Null Conditional Operator

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; }
}

訂閱返回

    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; }
}

但是,如果Subscription為null,則Subscription?.SubscriptionExpires返回一個null reference exception ,因此我們仍然保留舊的

    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; }
}

當父對象可以為空時,如何使用Null-Conditional運算符讀取屬性?

一般承認的答案

當父對象可以為空時,如何使用Null-Conditional運算符讀取屬性?

你就像使用Subscription?.SubscriptionExpires 。這不會拋出NullReferenceException ,但會返回DateTime? 。如果您嘗試使用DateTime?那麼你會得到一個例外。所以這不會拋出:

var expiration = Subscription?.SubscriptionExpires;

但這可能:

var expiration = Subscription?.SubscriptionExpires;

熱門答案

如果您希望“var expiration”在使用它作為DateTime數據類型時不應該拋出異常

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



許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因