C# 对Null对象的属性使用Null条件运算符
我想使用Null条件运算符检查下面的C# 对Null对象的属性使用Null条件运算符,c#,entity-framework-core,c#-6.0,C#,Entity Framework Core,C# 6.0,我想使用Null条件运算符检查下面的SubscriptionExpires属性 public partial class Subscription { [Key] public int SubscriptionId { get; set; } public string SubscriberId { get; set; } public DateTime? SubscriptionExpires { get; set; } public virt
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; }
}
但是,如果Subscription
为空,Subscription?.SubscriptionExpires
返回一个null引用异常
,因此我们仍然保留旧的
if (subscription != null)
当父对象可以为Null时,如何使用Null条件运算符读取属性
当父对象可以为Null时,如何使用Null条件运算符读取属性
您可以像处理Subscription?一样执行此操作。SubscriptionExpires
。这不会抛出NullReferenceException
,但会返回DateTime?
。如果尝试使用DateTime?
的值,则会出现异常。因此,这不会抛出:
var expiration = Subscription?.SubscriptionExpires;
但这可能:
DateTime? expiration = Subscription?.SubscriptionExpires;
DateTime expiration.Value;
当父对象可以为Null时,如何使用Null条件运算符读取属性
您可以像处理Subscription?一样执行此操作。SubscriptionExpires
。这不会抛出NullReferenceException
,但会返回DateTime?
。如果尝试使用DateTime?
的值,则会出现异常。因此,这不会抛出:
var expiration = Subscription?.SubscriptionExpires;
但这可能:
DateTime? expiration = Subscription?.SubscriptionExpires;
DateTime expiration.Value;
如果您希望“var expiration”在将异常用作您可以使用的日期时间数据类型时,不应引发异常
var expiration = subscription?.SubscriptionExpires ?? DateTime.MinValue;
如果您希望“var expiration”在将异常用作您可以使用的日期时间数据类型时,不应引发异常
var expiration = subscription?.SubscriptionExpires ?? DateTime.MinValue;
谢谢@Banketeshvar Narayan但为什么这是必要的?var不接受返回的任何类型。。。如果这是null,不是吗?@LongwordsBotherme,null条件运算符(?)用于处理null引用异常,并仅返回null而不是抛出异常。所以,若您将该空值赋给“var expiration”,那个么当您赋给“expiration”任何其他DateTime变量或您必须使用DateTime时,它可能会引发异常?i3arnon给出的答案是100%正确的,但我刚刚给出了另一种选择,即如果您不想使用可为空的数据类型(即使用DateTime而不是DateTime?),感谢您提供的提示@Banketeshvar Narayantank you@Banketeshvar Narayan,但为什么这是必要的?var不接受返回的任何类型。。。如果这是null,不是吗?@LongwordsBotherme,null条件运算符(?)用于处理null引用异常,并仅返回null而不是抛出异常。所以,若您将该空值赋给“var expiration”,那个么当您赋给“expiration”任何其他DateTime变量或您必须使用DateTime时,它可能会引发异常?i3arnon给出的答案是100%正确的,但我刚刚给出了另一种选择,如果您不想使用可为空的数据类型(即使用DateTime而不是DateTime?),感谢您提供的提示@BankeTesthVar Narayan