2011-09-08 5 views
2

"이상한"C 번호 구문 :난 그냥 내가 코드 프로젝트에서 다운로드 프로젝트에 이것을보고

base.DialogResult = this.Result != null; 

나는 C#에 자신의 새로운 생각하지 않는다 그러나 이것은 나에게 새로운 기능입니다. 누구든지이 성명서로 어떤 일이 벌어지고 있는지 말해 줄 수 있습니까?

편집 위대한 답변 감사합니다. 나는 전에 그것을 사용한 적이 없습니다.

+0

"이상한"이라고 부를 수는 없습니다. 그것은 "bool toto = this.Result! = null; base.DialogResult = toto;"와 같습니다. –

답변

9

괄호를 추가하면 읽기 쉽고 이해하기 쉽습니다.

base.DialogResult = (this.Result != null); 

같은 문, 더 자세한 정보 :

if (this.Result != null) 
    base.DialogResult = true; 
else 
    base.DialogResult = false; 
+0

그것은 단락 회로 인 경우입니까? –

+1

비교 결과는 부울이며 그 값은 왼쪽에 지정됩니다. – Landei

+0

예, 단락 회로 인 경우 –

4

this.Result != null은 부울에 true 또는 false 평가 논리 비교 연산자 !=는 할당 연산자 = 앞에옵니다.

평가 결과는 기본 클래스 DialogResult에 설정됩니다.

전혀 이상하지 않습니다. 단지 과제 일뿐입니다.

3

!= (같지 않음) 연산자는 = (할당) 연산자보다 우선합니다. 이 거세한 숫양에 따라 참 또는 거짓 반환 있도록

+0

+1 연산자 우선 순위는 항상 염두에 두어야 할 사항입니다. – mdm

2

는, 기본적으로는 표현이있는 평등 연산자를 사용

this.Result != null 

base.DialogResult 

에 식의 결과를 할당, 간단한 그게 전부 결과가 null이거나 아님

0

의미 :

bool g = (this.Result != null); 
this.DialogResult = g; 
관련 문제