Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 对Null对象的属性使用Null条件运算符_C#_Entity Framework Core_C# 6.0 - Fatal编程技术网

C# 对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

我想使用Null条件运算符检查下面的
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