2009-03-24 10 views
5

예를 들어 오리를 만듭니다.객체가 null인지 아닌지 먼저 확인해야합니까?

Duck myDuck = DuckFactory.CreateDuck(); 

과거에는 항상 myDuck이 null인지 확인했습니다.

if (myDuck == null) 
{ 
    // Do stuff 
} 

최근에 null을 먼저 확인하는 코드를 보았습니다 .

if (null == myDuck) 
{ 
    // Do stuff 
} 

이것들은 동일하지만이 둘 사이에 차이점이 있습니까? 하나 이상의 성능 이점이 있습니까? 객체가 null인지 확인하기위한 권장 모범 사례가 있습니까?

+0

Dupie McDuperson : http://stackoverflow.com/questions/ 655657/0-variable-or-null-obj-an-dd-practice-in-c/655670 # 655670 – Dana

+0

3 이상의 누에 : http://askjonskeet.com/search/?q = typo + C % 2B % 2B –

+0

나는 이것에 대해 dup을 찾고 나의 실사를 시도했다. 나에게는 간결한 방식으로 말로 표현하는 것이 매우 어려운 개념이었다. 어느 쪽이든, 위대한 응답을 주셔서 감사합니다. – bendewey

답변

16

두 번째는이 유효한 구조 (표현식은 부울로 해석하지 않는 한) C#에서 사용할 수 없습니다입니다

if (myDuck = null) { 
} 

에게 있습니다 C/C++ (다른 곳)에서 유래한다. 예를 들어, 당신이 비교를 원하는 경우 상수 첫번째 실수로 할당을 중지 방어했다 퍼팅 유효한 C#을

bool b = ... 
if (b = true) { 
} 

입니다. 저는 더 많은 사람들이 변수를 왼쪽에 넣었지만 상수를 왼쪽에 두는 것에는 아무런 문제가 없다고 말합니다.

하나를 골라서 일관성을 유지하십시오.

+0

예. "if (myDuck = null)"이 유효한 구문이고, 찾기 어렵고 프로그램 오류가 발생할 수 있습니다. – dustyburwell

+0

필자는 코드에서 오류를 본 적이 없었습니다. 아마도 80 년대에 큰 일이었을 것입니다. –

+0

(또는 다른 사람의 코드) –

0

아무런 차이가 없다고 생각합니다.

if 문은 단순히 wheter를 검사하거나 포함 된식이 true인지 확인합니다. Wheter myDuck은 == 기호 오른쪽의 왼쪽에 차이가 없습니다. 실수로 이것을 넣어한다면

1

유일한 차이가 발생합니다

if(myDuck = null) ... 

그러나 현실에서

, C# 컴파일러가이를 감지 할만큼 똑똑하다.

당신은 실수로이를 넣어 경우

if(null = myDuck) ... 

그런 다음이 초래 오류가 다시 C 또는 C++ 일.

짧은 이야기 : C#에서는 아무런 차이가 없습니다.

0

'null'을 먼저 쓰면 (myDuck = null) 우발적 인 할당을 방지 할 수 있습니다. 그러나 일부 컴파일러는 오류를 발생 시키므로 오류가 발생합니다. 이모 모든 스타일에 온다 - 그것을 골라야 :

0

하나는 C + + 구문, 자바 또는 C#과 같은 것 같습니다. 내가 읽은 바로는

는, 구문 명에서 C에서 시작된 "myDuck는 == 널 (null)이"실수로 자신의 경우 제표에 할당 :

if (myDuck = null) 
    // returns true 
관련 문제