У меня есть следующий код:
class Program
{
static void Main(string[] args)
{
Console.WriteLine(SqrtRoot(0));
Console.WriteLine(SqrtRoot(10));
Console.WriteLine(SqrtRoot(-10));
Console.ReadKey();
}
public static int SqrtRoot(int i)
{
Contract.Requires(i >= 0);
return (int)Math.Sqrt(i);
}
}
Я выполняю его в режиме отладки, и это должно запустить некоторую ошибку в последнюю строку
Console.WriteLine(SqrtRoot(-10));
хотя по некоторым причинам это не делает. Это, кажется, игнорирует Контракт. Требует () вызова. Я должен настроить что-то при попытке использовать Контракты Кода?
Я использую RC Visual Studio 2010.
Спасибо
У меня тоже нет этой вкладки, но я нашел обходной путь:
Contract.Requires<ArgumentOutOfRangeException>(i >= 0);
Вероятно, пакет контрактов кода должен быть установлен, но ссылка для загрузки не работает. http://msdn.microsoft.com/en-us/devlabs/dd491992.aspx
Я думаю, вам нужно включить проверку контрактов во время выполнения в настройках проекта (должна быть панель "Code Contracts"...)
Дополнительную информацию смотрите в пользовательской документации (раздел 6).
Вам необходимо установить интеграцию Visual Studio. Хотя сама библиотека CodeContracts является частью.NET 4, ваш код должен быть переписан переписчиком Code Contracts ( ccrewrite
), чтобы действительно правильно использовать библиотеку.
Загрузите установщик с сайта DevLabs .