`?`를 사용하여 null 및 설정 값을 확인할 수 없습니다.

BendEg

null이 아닌 사전 검사위해 new ? 연산자를 사용하여 값을 설정하는 것이 할당에 사용할 수없는 이유는 무엇 입니까?

예를 들면 :

var list = // ... Some list
var entry = list.FirstOrDefault();
entry?.Value = 123;

오류로 인해 컴파일되지 않습니다.

할당의 왼쪽은 변수, 속성 또는 인덱서 여야합니다.

그러나 메서드 또는 다른 것을 호출하면 작동합니다.

이 컴파일러 동작의 이유는 무엇입니까?

세르게이 칼리니첸코

C # 컴파일러는 ?s 체인이로 평가 null되면 모든 추가 처리가 중지됨 을 선언하여이 문이 제대로 작동하도록 만들 수 있습니다.

그러나 문제는 오른쪽에 부작용이있을 때해야 할 일입니다.

entry?.Value = CallSomeFunctionWithSideEffects(123);

이것의 의미는 오른쪽이 항상 평가 될 때 다른 할당과 크게 다릅니다. 그러나 여기서 오른쪽 평가는 왼쪽이 비값을 생성하는 것으로 알려질 때까지 연기되어야 null합니다.

호출 대상이 매개 변수보다 먼저 처리되기 때문에 함수 호출에는 동일한 문제가 발생하지 않습니다.

entry?.SetValue(CallSomeFunctionWithSideEffects(123));

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Jade 및 Node를 사용하여 확인란을 표시 할 수 없습니다.

분류에서Dev

jquery를 사용하여 선택한 값을 설정할 수 없습니다.

분류에서Dev

npm을 사용하여 redis 및 moment를 설치할 수 없습니다.

분류에서Dev

포인터를 사용하여 정수 값을 변경할 수 없습니다.

분류에서Dev

다른 도메인에서 창 인증을 사용하여 다른 도메인 및 mvc 앱에서 ADFS를 설정할 수 없습니다.

분류에서Dev

Appium Doctor를 사용하여 Windows의 설정을 확인할 수 있습니까?

분류에서Dev

jquery를 사용하여 확인란 값을 필터링 할 수 없습니다.

분류에서Dev

자바 스크립트를 사용하여 Google 설문지에 입력 값을 설정할 수 없습니다.

분류에서Dev

JPA / Hibernate를 사용하여 매핑되지 않은 열에 대해 'null'값을 설정할 수 있습니까?

분류에서Dev

getFields를 사용하여 모든 필드가 설정되었는지 확인합니다. getValue가 null을 반환하지만 null과 비교할 수 없습니다.

분류에서Dev

게시 된 변수를 사용하여 설정된 codeigniter 쿠키는 값을 검색 할 수 없습니다.

분류에서Dev

PHP 변수를 사용하여 텍스트 상자의 값을 설정할 수 없습니다.

분류에서Dev

javascript / jquery를 사용하여 드롭 다운에서 동적으로 값을 설정할 수 없습니다.

분류에서Dev

Spring Boot + GORM + Gradle을 사용하여 NamingStrategy를 설정할 수 없습니다.

분류에서Dev

FolderBrowserDialog를 사용하여 비트 맵을 설정할 수 없습니다.

분류에서Dev

MS 워드에서 양식 acrofields를 사용하여 필드 값을 설정할 수 없습니다

분류에서Dev

Bootstrap 테이블에서 jQuery를 사용하여 데이터 URL 값을 설정할 수 없습니다.

분류에서Dev

Angular.js를 사용하여 동적으로 값을 설정할 수 없습니다.

분류에서Dev

각도 js를 사용하여 선택 상자에서 기본값을 설정할 수 없습니다.

분류에서Dev

클래스 속성 배열, $ this를 사용하여 값을 설정할 수 없습니다.

분류에서Dev

foreach 루프를 사용하여 키 값 배열을 배열로 설정할 수 없습니다.

분류에서Dev

docker ip 및 port를 설정하면 docker ps -a를 사용할 수 없습니다.

분류에서Dev

Chrome 확장 프로그램을 사용하여 쿠키를 설정할 수 없습니다.

분류에서Dev

정규식 및 re.findall ()을 사용하여 숫자를 추출하고 합산 할 수 없습니다.

분류에서Dev

aptitude 및 apt-get을 사용하여 Ubuntu 16.04 LTS에 python-dev를 설치할 수 없습니다.

분류에서Dev

aptitude 및 apt-get을 사용하여 Ubuntu 16.04 LTS에 python-dev를 설치할 수 없습니다.

분류에서Dev

Android : Entrust 인증서를 사용하여 HTTPS 연결을 설정할 수 없습니다.

분류에서Dev

leftOf를 사용하여 확인란을 선택할 수 없습니다.

분류에서Dev

로케일을 설정할 수 없습니다. $ LC_ * 및 $ LANG이 올바른지 확인하십시오!

Related 관련 기사

  1. 1

    Jade 및 Node를 사용하여 확인란을 표시 할 수 없습니다.

  2. 2

    jquery를 사용하여 선택한 값을 설정할 수 없습니다.

  3. 3

    npm을 사용하여 redis 및 moment를 설치할 수 없습니다.

  4. 4

    포인터를 사용하여 정수 값을 변경할 수 없습니다.

  5. 5

    다른 도메인에서 창 인증을 사용하여 다른 도메인 및 mvc 앱에서 ADFS를 설정할 수 없습니다.

  6. 6

    Appium Doctor를 사용하여 Windows의 설정을 확인할 수 있습니까?

  7. 7

    jquery를 사용하여 확인란 값을 필터링 할 수 없습니다.

  8. 8

    자바 스크립트를 사용하여 Google 설문지에 입력 값을 설정할 수 없습니다.

  9. 9

    JPA / Hibernate를 사용하여 매핑되지 않은 열에 대해 'null'값을 설정할 수 있습니까?

  10. 10

    getFields를 사용하여 모든 필드가 설정되었는지 확인합니다. getValue가 null을 반환하지만 null과 비교할 수 없습니다.

  11. 11

    게시 된 변수를 사용하여 설정된 codeigniter 쿠키는 값을 검색 할 수 없습니다.

  12. 12

    PHP 변수를 사용하여 텍스트 상자의 값을 설정할 수 없습니다.

  13. 13

    javascript / jquery를 사용하여 드롭 다운에서 동적으로 값을 설정할 수 없습니다.

  14. 14

    Spring Boot + GORM + Gradle을 사용하여 NamingStrategy를 설정할 수 없습니다.

  15. 15

    FolderBrowserDialog를 사용하여 비트 맵을 설정할 수 없습니다.

  16. 16

    MS 워드에서 양식 acrofields를 사용하여 필드 값을 설정할 수 없습니다

  17. 17

    Bootstrap 테이블에서 jQuery를 사용하여 데이터 URL 값을 설정할 수 없습니다.

  18. 18

    Angular.js를 사용하여 동적으로 값을 설정할 수 없습니다.

  19. 19

    각도 js를 사용하여 선택 상자에서 기본값을 설정할 수 없습니다.

  20. 20

    클래스 속성 배열, $ this를 사용하여 값을 설정할 수 없습니다.

  21. 21

    foreach 루프를 사용하여 키 값 배열을 배열로 설정할 수 없습니다.

  22. 22

    docker ip 및 port를 설정하면 docker ps -a를 사용할 수 없습니다.

  23. 23

    Chrome 확장 프로그램을 사용하여 쿠키를 설정할 수 없습니다.

  24. 24

    정규식 및 re.findall ()을 사용하여 숫자를 추출하고 합산 할 수 없습니다.

  25. 25

    aptitude 및 apt-get을 사용하여 Ubuntu 16.04 LTS에 python-dev를 설치할 수 없습니다.

  26. 26

    aptitude 및 apt-get을 사용하여 Ubuntu 16.04 LTS에 python-dev를 설치할 수 없습니다.

  27. 27

    Android : Entrust 인증서를 사용하여 HTTPS 연결을 설정할 수 없습니다.

  28. 28

    leftOf를 사용하여 확인란을 선택할 수 없습니다.

  29. 29

    로케일을 설정할 수 없습니다. $ LC_ * 및 $ LANG이 올바른지 확인하십시오!

뜨겁다태그

보관