6

私は次のコードを持っています:

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));

とはいえ、何らかの理由でそうではありません。Contract.Requires()呼び出しを無視しているようです。コードコントラクトを使用しようとするときに何かを設定する必要がありますか?

Visual Studio2010RCを使用しています。

ありがとう

4

3 に答える 3

5

VisualStudio統合をインストールする必要があります。CodeContractsライブラリ自体は.NET4の一部ですが、ccrewrite実際にライブラリを適切に使用するには、コードコントラクトリライター()でコードを書き直す必要があります。

DevLabsサイトからインストーラーをダウンロードします。

于 2010-03-04T01:51:10.007 に答える
2

そのタブもありませんが、回避策を見つけました。

Contract.Requires<ArgumentOutOfRangeException>(i >= 0);

おそらく、コードコントラクトパッケージをインストールする必要がありますが、ダウンロードリンクが機能していません。http://msdn.microsoft.com/en-us/devlabs/dd491992.aspx

于 2010-02-14T23:31:09.650 に答える
0

プロジェクト設定でランタイムコントラクトチェックを有効にする必要があると思います([コードコントラクト]ペインがあるはずです...)

詳細については、ユーザードキュメント(セクション6)を参照してください。

于 2010-02-14T23:06:01.530 に答える