Как действительно Сокращается. Существует добавленная стоимость?

Я только начинаю узнавать о библиотеке контрактов кода, которая приезжает стандарт с VS2010. Одна вещь, с которой я сталкиваюсь сразу же, - то, что действительно означают некоторые пункты контракта.

Например, как эти два оператора отличаются?

Contract.Requires(!mycollection.Any(a => a.ID == newID));
Contract.Requires(!Contract.Exists(mycollection, a => a.ID == newID));

Другими словами, что действительно Сокращается. Существует делают в практических целях, или для разработчика, использующего мою функцию, или для статической системы анализа кода?

9
задан scobi 6 May 2010 в 10:45
поделиться

2 ответа

Хорошо, я нашел ответ. Согласно Руководству пользователя Code Contracts, раздел 2.7.2:

«Также можно использовать метод расширения System.Linq.Enumerable.Any вместо Contract.Exists».

Таким образом, они эквивалентны. Я буду использовать Any вместо Exists, чтобы он соответствовал остальной части нашего кода.

1
ответ дан 3 November 2019 в 07:12
поделиться

Версия, использующая Contract.Exists, предпочтительнее из-за своей декларативности. Другим преимуществом является то, что фреймворк знает этот контракт, и у него больше шансов быть "пойманным" при статическом анализе.

4
ответ дан 3 November 2019 в 07:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: