2009-03-09 5 views
6

Czy jest jakikolwiek powód, dla którego powinienem wybrać jeden z nich w stosunku do drugiego? Czy to naprawdę nie ma znaczenia?Linq2Sql: Czy HasValue i! = Null, działają tak samo dla typów nullable?

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

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

Użyłem != null wcześniej, ale zaczynam myśleć, mam może przełączyć, ponieważ HasValue niby brzmi lepiej. Co wy myślicie? Czy jest jakaś różnica? Inny niż dodatkowy znak? Jakiekolwiek różnice wydajności? Sql różnice?

+3

Lubię korzystanie z norweskim O jako identyfikator w kodzie. :) – KristoferA

+0

@ KristoferA-Huagati.com Ja też, ponieważ zapobiega automatycznemu uzupełnianiu innych rzeczy. 'x' zwykle działa na to również, ale nigdy nie używam' ø' ani niczego, co zaczyna się od tego listu na cokolwiek innego :) – Svish

Odpowiedz

12

Nie, oba stwierdzenia są takie same i powinieneś wybrać ten, który uznasz za bardziej czytelny.

Warto zauważyć, że kompilator zastąpi porównania null na Nullable<T> za pomocą połączenia z HasValue. Innymi słowy:

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

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

zostanie skompilowany do tego:

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

miło! jak widzisz wynik takiej kompilacji? – Svish

+1

Użyłem reflektora do analizy zespołu - http://www.red-gate.com/products/reflector/ –

Powiązane problemy