C# 배경을 가지고 있으므로 클래스 속성을 처리 할 때 (엔터티 프레임 워크 관계를 사용할 때) 항상 ?.
연산자를 사용합니다.null 조건부 연산자는 항상 첫 번째 null 발생을 중단합니까?
예를 들어이 클래스를 사용하고 상태 클래스가 null 인 경우 null 객체에서 속성을 가져 오는 중이므로 예외가 발생합니다. 이 같은
var order = DB.Order.Find(1);
var status = order.status.text;
이 문제를 해결하려면, 내가 할 수있는 일 :
var address = order.status?.text ?? "No status";
?.
운영자가 처음 널에 휴식과 acessings의 나머지를 건너 뜁니다.
나는 PHP에서 같은 상황을 가로 질러 와서 이런 일을 수행했다 : (null 객체에서 속성을 얻으려고 노력의 상태가 비어있는 경우
이$order = Orders::find(1);
$status = $order->status->text;
,이 같은 예외를 던질거야을).
그러나 나는 이런 짓을하고 일했다 :
$status = $order->status->text ?? "No status";
분명히, PHP는 status
가 null의 경우 acessing ->text
을 생략한다.
나는 created a fiddle 이것이 내 환경에만 있는지 아닌지를 확인하고 놀라 울 정도로 잘 작동합니다!
<?php
$j = "Hello!";
echo $a->b->c->d->e ?? $a->b->c->d ?? $a->b->c ?? $a->b ?? $j;
< < "안녕하세요!"
이것은 PHP에서 ??
연산자의 예상되는 동작입니까? 내가 didn't이 문서에 언급 된 참조하십시오.
내부적으로 isset을 사용한다는 진술에 대해서는 잘못 될 수 있지만 구현은 동일합니다. – Phiter