Насколько эффективна проверка DBNull.Value.Equals ()? - PullRequest
2 голосов
/ 11 апреля 2011

Я знаю, что, вероятно, недостаточно беспокоиться, но насколько быстрым является проверка DBNull.Value.Equals ()?1006 * по сравнению с исходным кодом (из класса Масс Роба Конери):

d.Add(rdr.GetName(i), rdr[i]);

Обязательно будет хотя бы небольшое влияние, опять же, вероятно, не совсем заметное, но мне любопытно.Причина преобразования заключается в том, что гораздо проще тестировать ноль в представлениях ASP.NET MVC.

1 Ответ

4 голосов
/ 11 апреля 2011

Если вы посмотрите на .NET рефлектор, вы увидите, что у объекта DBNull нет полей.Всегда есть один экземпляр DBNull (поле статического значения).Кроме того, метод Equals не переопределяется в классе DBNull.Это означает, что вызывается Object.Equals, который выполняет внешний вызов метода, который проверяет равенство ссылок.

Вывод: этот вызов сравнивает два указателя, и влияние на производительность не будет проблемой в любой ситуации,это как сравнение двух целочисленных значений.

...