2009-03-09 6 views
6

Gibt es einen Grund, warum ich einen von diesen über den anderen wählen sollte? Oder ist es nicht wirklich wichtig?Linq2Sql: Funktioniert HasValue und! = Null für Nullable-Typen?

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

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

I != null haben, bevor sie verwendet, aber ich sollte vielleicht wechseln zu denken beginnen, da HasValue Art besser liest. Was denkt ihr? Gibt es überhaupt einen Unterschied? Anders als ein Zeichen extra? Irgendwelche Leistungsunterschiede? SQL Unterschiede?

+3

Ich mag die Verwendung des norwegischen Ø als Bezeichner im Code. :) – KristoferA

+0

@ KristoferA-Huagati.com Ich auch, da es Auto-Vervollständigung für andere Dinge verhindert kommt. 'x' funktioniert normalerweise auch dafür, aber ich benutze' ø' oder irgendetwas, das mit diesem Buchstaben beginnt, für nichts anderes :) – Svish

Antwort

12

Nein, beide Aussagen sind die gleichen und Sie sollten wählen, welche Sie besser lesbar finden.

Etwas Interessantes zu beachten ist, dass der Compiler null Vergleiche auf Nullable<T> mit einem Aufruf an HasValue ersetzen wird. Mit anderen Worten folgt aus:

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

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

wird dazu zusammengestellt:

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

nice! Wie siehst du das Ergebnis einer solchen Zusammenstellung? – Svish

+1

Ich habe Reflektor verwendet, um die Baugruppe zu analysieren - http://www.red-gate.com/products/reflector/ –