Null 객체의 속성에 Null 조건부 연산자 사용

c# c#-6.0 entity-framework-core

문제

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; }
}

구독은 다음에 의해 반환됩니다.

    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 이 null 인 경우 Subscription?.SubscriptionExpiresnull reference exception 반환하므로 이전

    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; }
}

부모 객체가 null 일 수있는 경우 Null 조건부 연산자를 사용하여 속성을 읽는 방법

수락 된 답변

부모 객체가 null 일 수있는 경우 Null 조건부 연산자를 사용하여 속성을 읽는 방법

Subscription?.SubscriptionExpires 과 마찬가지로 수행합니다. Subscription?.SubscriptionExpires . 이것은 NullReferenceException throw하지 않지만 DateTime? 을 반환 DateTime? . DateTime? 을 사용하려고한다면 DateTime? 그 다음에 예외가 생깁니다. 그래서 이것은 던지지 않을 것입니다 :

var expiration = Subscription?.SubscriptionExpires;

그러나 이것은 :

var expiration = Subscription?.SubscriptionExpires;

인기 답변

"var expiration" 이 DateTime 데이터 형으로 사용할 때 예외를 던지면 안된다.

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



아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.