2009-03-09 2 views
6

내가 왜이 중 하나를 선택해야하는 이유가 있습니까? 아니면 정말로 중요하지 않습니까?Linq2Sql : HasValue와! = null은 nullable 유형에 대해 동일하게 작동합니까?

var a = data.Cars.Where(ø => ø.LicensePlate != null); 

var b = data.Cars.Where(ø => ø.LicensePlate.HasValue); 

내가 전에 != null을 사용하지만, HasValue가 가지 더 읽기 때문에, 나는 어쩌면 전환해야한다고 생각하기 시작했다. 너희들은 어떻게 생각하니? 차이가 있습니까? 1 문자 추가 이외? 성능 차이가 있습니까? SQL 차이점?

+3

나는 코드에서 식별자로 노르웨이 Ø의 사용을 좋아한다. :) – KristoferA

+0

@ KristoferA-Huagati.com 나 또한 다른 것들에 대한 자동 완성을 막지 못해서. 'x'는 보통이 일에도 잘 작동하지만, 나는'ø' 또는 그 편지로 시작하는 어떤 것도 결코 사용하지 않습니다 :) – Svish

답변

12

아니요, 두 문장이 동일하므로 더 가독성이 높은 것을 선택해야합니다.

흥미로운 점은 컴파일러가 비교를 Nullable<T>에서 HasValue으로 바꿀 것이기 때문입니다. 즉이 :

class Program 
{ 
    static void Main() 
    { 
     int? i = 0; 

     Console.WriteLine(i != null); 
     Console.WriteLine(i.HasValue); 
    } 
} 

이 컴파일됩니다 :

private static void Main() 
{ 
    int? i = 0; 
    Console.WriteLine(i.HasValue); 
    Console.WriteLine(i.HasValue); 
} 
+1

nice! 그런 편집 결과를 어떻게 보나요? – Svish

+1

나는 Reflector를 사용하여 어셈블리를 분석했습니다. - http://www.red-gate.com/products/reflector/ –

관련 문제