我想使用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; }
}
返回订阅
var subscription = _customersContext.Subscriptions.Where(s => s.SubscriptionId == user.SubscriptionId).FirstOrDefault();
但是如果Subscription
为空,Subscription?.SubscriptionExpires
会返回null reference exception
,那么我们仍然会留下旧的
if (subscription != null)
当父对象可以为null时,如何使用Null-Conditional运算符来读取属性?
答案 0 :(得分:5)
当父对象可以为null时,如何使用Null-Conditional运算符来读取属性?
您就像使用Subscription?.SubscriptionExpires
一样。这不会抛出NullReferenceException
,但会返回DateTime?
。如果您尝试使用DateTime?
的值,那么您将获得异常。所以这不会抛出:
var expiration = Subscription?.SubscriptionExpires;
但这可能:
DateTime? expiration = Subscription?.SubscriptionExpires;
DateTime expiration.Value;
答案 1 :(得分:1)
如果您希望&#34; var expiration&#34; 在将其用作DateTime数据类型时不应抛出异常,您可以使用
var expiration = subscription?.SubscriptionExpires ?? DateTime.MinValue;