对空对象的属性使用空条件运算符

本文关键字:条件运算符 对象 属性 | 更新日期: 2023-09-27 18:31:06

我想使用 Null-Condition 运算符来检查下面的 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?.SubscriptionExpires返回一个null reference exception,因此我们仍然保留旧的

if (subscription != null)

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

对空对象的属性使用空条件运算符

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

这样做就像你对Subscription?.SubscriptionExpires所做的那样.这不会抛出NullReferenceException,但它会返回DateTime?。如果您尝试使用 DateTime? 的值,则会出现异常。所以这不会抛出:

var expiration = Subscription?.SubscriptionExpires;

但这可能:

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

如果您希望"var过期"在将其用作DateTime数据类型时永远不会引发异常,则可以使用

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