Linq2Sql: Работают ли HasValue и! = Null одинаково для типов, допускающих значение NULL? - PullRequest
6 голосов
/ 09 марта 2009

Есть ли какая-то причина, по которой я должен выбрать один из них над другим? Или это не имеет значения?

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

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

Раньше я использовал != null, но начинаю думать, что мне, возможно, стоит переключиться, поскольку HasValue вроде читает лучше. Что, вы парни, думаете? Есть ли разница? Кроме одного дополнительного персонажа? Есть ли различия в производительности? Sql различия?

1 Ответ

12 голосов
/ 09 марта 2009

Нет, оба утверждения одинаковы, и вам следует выбрать тот, который вы считаете более читабельным.

Интересно отметить, что компилятор заменит null сравнений на 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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...