Domanda

Ho il seguente codice:

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

Sono in esecuzione in modalità di debug, e dovrebbe sparare qualche tipo di errore nell'ultima riga

Console.WriteLine(SqrtRoot(-10));

ospitarci, per qualche motivo, non è così. Sembra ignorare i Contract.Requires) chiamata (. Devo creare qualcosa quando si cerca di utilizzare contratti di codice?

Sto usando Visual Studio 2010 RC.

Grazie

È stato utile?

Soluzione

Non ho quella scheda sia ma ho trovato una soluzione:

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

Probabilmente il pacchetto di contratti di codice deve essere installato, ma il link per il download non funziona. http://msdn.microsoft.com/en-us/devlabs/dd491992. aspx

Altri suggerimenti

È necessario installare l'integrazione di Visual Studio. Mentre la biblioteca CodeContracts stessa è parte di NET 4, il codice deve essere riscritto dal Codice Contratti masterizzatore (ccrewrite) utilizzare effettivamente la libreria in modo corretto.

Scarica il programma di installazione dal DevLabs sito .

Credo che bisogna attivare il controllo nelle impostazioni del progetto del contratto di esecuzione (ci dovrebbe essere un riquadro "I contratti Codice" ...)

Vedere la utente documentazione (sezione 6) per ulteriori informazioni.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top