저는 특히 null 전파에주의를 기울이고 있습니다. 이는 bool?
과 bool
반환 방법을 사용하기 때문에 발생합니다.null 전파가 일관성없이 전파되는 이유 Nullable <T>?
public static bool IsAttributedWith<TAttribute>(this JsonProperty property)
where TAttribute : Attribute
{
return property?.AttributeProvider
.GetAttributes(typeof(TAttribute), false)
.Any();
}
이 컴파일되지 않습니다, 다음과 같은 오류가 있습니다 :
암시 부울을 변환 할 수 없습니다 예를 들어, 다음을 고려? 부울에게. 명시 적 변환이 존재합니다 (캐스트가 누락 되었습니까)?
이것은 내가이 .Any()
후 .GetValueOrDefault()
을 말할 수 있다고 가정 것 같은 같은 bool?
같은 방법의 몸 전체를 치료되지만이 .Any()
반환 bool
하지 bool?
으로 허용되지 않는 것을 의미한다. 왜 못해,
public static bool IsAttributedWith<TAttribute>(this JsonProperty property)
where TAttribute : Attribute
{
return property?.AttributeProvider
.GetAttributes(typeof(TAttribute), false)
.Any()
?? false;
}
또는
public static bool IsAttributedWith<TAttribute>(this JsonProperty property)
where TAttribute : Attribute
{
var any =
property?.AttributeProvider
.GetAttributes(typeof(TAttribute), false)
.Any();
return any.GetValueOrDefault();
}
또는
public static bool IsAttributedWith<TAttribute>(this JsonProperty property)
where TAttribute : Attribute
{
return property?.AttributeProvider
.GetAttributes(typeof(TAttribute), false)
.Any()
?? false;
}
내 질문은 :
나는 내가 주위 작품으로 다음 중 하나를 수행 할 수 있다는 것을 알고있다 .Any()
호출에서 직접 .GetValueOrDefault()
체인을 호출합니까?
public static bool IsAttributedWith<TAttribute>(this JsonProperty property)
where TAttribute : Attribute
{
return (property?.AttributeProvider
.GetAttributes(typeof(TAttribute), false)
.Any())
.GetValueOrDefault();
}
나는 값이 실제로이 시점에서
bool?
하지
bool
같이이 나을 것 같아요.
당신은 이렇게 괄호를 넣어야을'.' 연산자 알려진 곳 조건 호출 체인 끝 :'(property? .AttributeProvider.GetAttributes (typett (TAttribute), false) .Any()). GetValueOrDefault()'. – PetSerAl
'property'가 null의 경우, 메소드는 null를 돌려 주려고합니다. 그러나 반환 유형이 'bool'이므로 null 유형이 아닙니다. 반환 유형을'bool? '으로 변경하십시오. – Abion47