2009-03-09 19 views
6

Có lý do nào để tôi chọn một trong số này? Hay nó không quan trọng?Linq2Sql: HasValue và! = Null, có hoạt động tương tự đối với các kiểu nullable không?

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

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

Tôi đã sử dụng != null trước đây, nhưng bắt đầu nghĩ tôi có thể chuyển đổi, vì loại HasValue đọc tốt hơn. các bạn nghĩ sao? Có sự khác biệt nào không? Ngoài một nhân vật phụ? Bất kỳ sự khác biệt về hiệu suất nào? Sql khác biệt?

+3

Tôi thích việc sử dụng Ø norwegian như một định danh trong mã. :) – KristoferA

+0

@ KristoferA-Huagati.com Tôi cũng vậy, vì nó ngăn tự động hoàn thành cho các nội dung khác sắp xuất hiện. 'x' thường hoạt động cho điều này mặc dù vậy, nhưng tôi không bao giờ sử dụng' ø' hoặc bất cứ thứ gì bắt đầu bằng chữ cái đó cho bất cứ điều gì khác :) – Svish

Trả lời

12

Không, cả hai câu lệnh đều giống nhau và bạn nên chọn bất kỳ câu nào bạn thấy dễ đọc hơn.

Một điều thú vị cần lưu ý là trình biên dịch sẽ thay thế số null so sánh trên số Nullable<T> với cuộc gọi đến HasValue. Nói cách khác đây:

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

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

được biên dịch như sau:

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

đẹp! làm thế nào để bạn thấy kết quả của một trình biên dịch như thế? – Svish

+1

Tôi đã sử dụng Reflector để phân tích assembly - http://www.red-gate.com/products/reflector/ –

Các vấn đề liên quan