对空对象的属性使用空条件运算符
本文关键字:条件运算符 对象 属性 | 更新日期: 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;