Я столкнулся с некоторым кодом в нескольких проектах, которые используют if (Is.NotNull (SomeObject)) вместо if (SomeObject! = Null). Есть ли разница между этими двумя методами? Когда можно использовать конкретный метод над другим, или это просто выбор стиля?Разница между Is.NotNull и! = Null
ответ
Я видел Is.Not.Null
как часть NUnit, а также Is.NotNull
от Rhino.Mocks.
Как правило, функциональность не будет отличаться - пустушка Is.NotNull
предназначена только для того, чтобы выражать ваши модульные тесты более «плавно» или, естественно. Было много разговоров о читаемости тестов, и идея свободного синтаксиса заключается в том, что когда вы читаете его слева направо, он формирует предложение, описывающее, что делает строка кода.
Тип Is
в вашем образце - это не то, что я видел раньше в библиотеке базового класса. Это звучит как что-то, написанное кем-то в вашей компании или в другом месте, возможно, как часть «свободной» библиотеки.
Там может быть тонкой разницей, если тип времени компиляции выражения SomeObject
перегружен! =. Я бы надежда это не имело бы никакого значения в конце, хотя, предполагая, что все реализовано разумно.
Трудно точно знать, что здесь происходит, поскольку Is.NotNull
не является частью библиотеки базового класса, насколько мне известно ... эти проекты используются с использованием какой-либо другой библиотеки утилит? Являются ли они в модульных тестах или производственном коде?
Ах, вы правы, это не часть библиотеки базового класса, это часть пользовательской внешней сборки, которую мы имеем здесь. Этот метод был реализован в классе «Is» в пространстве имен System, что привело к тому, что он был частью BCL. Спасибо за вашу помощь! – tbreffni
Возможно, вам нужно посмотреть Is.NotNull() и посмотреть, не выглядит ли он внутри объекта, чтобы определить, есть ли у него какие-либо значения, например.
Возможно, что объект считается нулевым по нескольким причинам, чем значение объекта, фактически являющееся нулевым (или не установленным). Может быть, если некоторые атрибуты не установлены, которые должны быть установлены, то он также будет считаться нулевым.
Вероятно, есть разница. Если SomeObject имеет равенства/не равно не перегружать его не может быть названо по той же причине эти два утверждения различны:
if(x == null) ...
- или -
if(((object)x) == null) ...
Чем позже будет использовать равенство ссылок, в то время как первый может использовать перегрузку оператора.
- 1. Разница между '(()) и (минус null null)
- 2. Разница между 'a == null' и 'null == a'
- 3. Разница между (null) и <null>
- 4. Разница между NULL и null в PHP
- 5. Разница между MySQL IS NOT NULL и! = ''
- 6. разница между NULL и Зеро в сравнении
- 7. Разница между соединением.close() и connection = null
- 8. Разница между ObjectOfFoo = null и ObjectOfFoo.Dispose()
- 9. разница: между текстовым полем = «» и Null
- 10. Разница между обновлением с помощью NULL и ''?
- 11. Разница между нулем! = Переменная и переменная! = Null
- 12. разница между C (указатель!) И (указатель! = NULL),
- 13. Разница между нулем == объект и объект == null
- 14. В чем разница между NUL и NULL?
- 15. Oracle: разница между NULL и EMPTY-строкой
- 16. Разница между mySlickgrid.destroy() и mySlickgrid = null
- 17. Objective-C Разница между (null) и nil
- 18. В чем разница между null и System.DBNull.Value?
- 19. В чем разница между «x is null» и «x == null»?
- 20. Есть ли разница между == null и .equals ("null")?
- 21. Разница между NULL в SQL и null в языках программирования
- 22. В чем разница между DEFAULT NULL и CHECKBOX NULL mysql?
- 23. В чем разница между «(Object) null» и «null» в Java?
- 24. Есть ли разница между IS NULL и = NULL
- 25. Есть ли разница между (null == var) и (var == null)
- 26. В MySql какая разница между: = NULL и IS NOT NULL
- 27. Есть ли разница между "not null" и "not null enable"?
- 28. В чем разница между символом == null и символом === null?
- 29. Разница между ColumnName = Null и ColumnName Null в SQL Server
- 30. Разница между Object.create (null) vs {}?
Интересно ... Я подозреваю, что именно по этой причине он был создан, хотя, возможно, он не должен был быть помещен в пространство имен System. Спасибо за понимание. – tbreffni
Согласен ... версия NUnit крайне раздражает. Если вы используете NUnit и Rhino вместе, это отстой, чтобы полностью квалифицировать все. – womp